У меня есть изображение (Frameworkelement) в моем графическом интерфейсе. Там есть изображение. Теперь я выполняю двойной щелчок на этом изображении, и я хочу, чтобы Изображение сохраняет себя и будет открываться с помощью образа изображения по умолчанию.Сохранение изображений из Image Control не работает
Мой код:
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.
отображается изображение. Мне не нужно использовать RenderTargetBitmap, я спросил, есть ли более простые и лучшие способы. Не могли бы вы предоставить некоторый пример кода, что на самом деле означает с установкой Image.Source в RenderTargetBitmap? Спасибо – eMi
ну и результат тот же .. Он сохраняет «newimage.png», но когда я открываю его с любым Imageviewer, его просто или просто черным - без контента. – eMi
ok решил проблему сейчас, я использовал 'File.WriteAllBytes()' – eMi