轉帖|其它|編輯:郝浩|2011-03-29 15:16:44.000|閱讀 1193 次
概述:silverlight中的圖片控件沒有直接將圖片內容保存到文件的方法,也不能直接讀出圖片內容,需要借助silverlight3.0新增的一個類WriteableBitmap來保存。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
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, 0, (int)pngStream.Length);
Stream stream = sfd.OpenFile();
stream.Write(binaryData, 0, binaryData.Length);
stream.Close();
}
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:CSDN