【发布时间】:2012-05-22 10:57:13
【问题描述】:
我的 GUI 上有一个图像(框架元素)。 里面有一张图。现在我在这张图片上双击,我想要, 图像会自行保存,并将使用默认图像查看器打开。
我的代码:
void image_MouseDown(object sender, MouseButtonEventArgs e)
{
//Wayaround, cause there is no DoubleClick Event on Image
if (e.ChangedButton == MouseButton.Left && e.ClickCount == 2)
{
SaveToPng(((Image)sender), "SavedPicture.png");
Process.Start("SavedPicture.png");
}
}
void SaveToPng(FrameworkElement visual, string fileName)
{
var encoder = new PngBitmapEncoder();
SaveUsingEncoder(visual, fileName, encoder);
}
void SaveUsingEncoder(FrameworkElement visual, string fileName, BitmapEncoder encoder)
{
RenderTargetBitmap bitmap = new RenderTargetBitmap(
(int)visual.ActualWidth,
(int)visual.ActualHeight,
96,
96,
PixelFormats.Pbgra32);
bitmap.Render(visual);
BitmapFrame frame = BitmapFrame.Create(bitmap);
encoder.Frames.Add(frame);
using (var stream = File.Create(fileName))
{
encoder.Save(stream);
}
}
使用Process.Start 打开图片效果很好。问题是保存,它保存了图片:SavedPicture.png 但是,它只是黑色,所以没有图形.. 也许有人可以告诉我,我的代码有什么问题,或者知道在 WPF 中保存图像的更好方法。
【问题讨论】: