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で画像を保存するより良い方法を知っているかもしれません.