silverlight中的图片控件没有直接将图片内容保存到文件的方法,也不能直接读出图片内容,需要借助silverlight3.0新增的一个类WriteableBitmap来保存。代码如下:
public static void SaveAsPNG(Image img) { SaveFileDialog sfd = new SaveFileDialog() { DefaultExt = "png",Filter = "Png files (*.png)|*.png|All files (*.*)|*.*",FilterIndex = 1 }; if (sfd.ShowDialog() == true) { var bitmap = new WriteableBitmap((BitmapImage)img.source); EditableImage imageData = new EditableImage(bitmap.PixelWidth,bitmap.PixelHeight); try { for (int y = 0; y < bitmap.PixelHeight; ++y) { for (int x = 0; x < bitmap.PixelWidth; ++x) { int pixel = bitmap.Pixels[bitmap.PixelWidth * y + x]; imageData.SetPixel(x,y,(byte)((pixel >> 16) & 0xFF),(byte)((pixel >> 8) & 0xFF),(byte)(pixel & 0xFF),(byte)((pixel >> 24) & 0xFF) ); } } } catch (System.Security.SecurityException) { throw new Exception("Cannot print images from other domains"); } // Save it to disk Stream pngStream = imageData.GetStream(); byte[] binaryData = new Byte[pngStream.Length]; pngStream.Read(binaryData,(int)pngStream.Length); Stream stream = sfd.OpenFile(); stream.Write(binaryData,binaryData.Length); stream.Close(); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。