У меня возникли трудности с JpegBitmapEncoder, так как он создает изображение, которое помещается в черный прямоугольник. и у меня нет решения для исправления.WPF - черный фон вокруг сохраненного холста как jpeg
private void SaveImage(Canvas canvas, string fileName)
{
SaveFileDialog s = new SaveFileDialog();
s.FileName = "Pic";
s.DefaultExt = ".jpg";
s.Filter = "JPG files (.jpg)|*.jpg";
Nullable<bool> result = s.ShowDialog();
if (result == true)
{
RenderTargetBitmap renderBitmap = new RenderTargetBitmap(6646, 3940, 2000d, 2000d, PixelFormats.Pbgra32);
canvas.Measure(new Size((int)canvas.Width, (int)canvas.Height));
canvas.Arrange(new Rect(new Size((int)canvas.Width, (int)canvas.Height)));
renderBitmap.Render(canvas);
string filename = s.FileName;
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(renderBitmap));
using (FileStream file = File.Create(filename))
{
encoder.Save(file);
}
}
}
с этим кодом я получаю:
но когда я использую PngBitmap кодировщика этого не происходит. Может ли кто-нибудь просветить свет? Как удалить черный прямоугольник или, возможно, заполнить его, увеличив размеры изображения?
Это на самом деле хорошо, и это решает проблему, проблема была у меня был граница (что я забыл о) вокруг холста (холст на самом деле размер изображения xD), поэтому, когда я заполняю границу белым, на самом деле это трюк! Tnx alot! – MicroDev
Без проблем, я боролся с экспортом изображений/скриншотов всю неделю и только что попал в эту точную проблему! – Joe