Я пытаюсь сохранить содержимое холста WPF в изображении с кодом:
Rect rect = new Rect(canvas.RenderSize);
RenderTargetBitmap rtb = new RenderTargetBitmap((int)rect.Right,
(int)rect.Bottom,
96d,
96d,
PixelFormats.Default);
rtb.Render(canvas);
BitmapEncoder pngEncoder = new PngBitmapEncoder();
pngEncoder.Frames.Add(BitmapFrame.Create(rtb));
System.IO.MemoryStream ms = new System.IO.MemoryStream();
pngEncoder.Save(ms);
ms.Close();
System.IO.File.WriteAllBytes("D://logo.png", ms.ToArray());
Холст имеет горизонтальное выравнивание по умолчанию «Центр», и кажется, что это проблемаотображаемое изображение на самом деле имеет размер холста, но включает в себя пустое левое поле, показывающее только часть реального содержимого холста.Но пустое пространство даже не является частью самого холста.
Я попытался обернуть холст в сетку и поместить его в центральный столбец, но он по-прежнему отображает пустое пространство слева.Если я выровняю изображение по горизонтали влево, оно действительно отрисовывает весь холст, но мне нужно, чтобы оно было отцентрировано.Можно ли каким-либо образом изменить код, включив в него только содержимое холста, а не поля?