RenderTargetBitmap отображает холст неправильно - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь сохранить содержимое холста 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());

Холст имеет горизонтальное выравнивание по умолчанию «Центр», и кажется, что это проблемаотображаемое изображение на самом деле имеет размер холста, но включает в себя пустое левое поле, показывающее только часть реального содержимого холста.Но пустое пространство даже не является частью самого холста.

Я попытался обернуть холст в сетку и поместить его в центральный столбец, но он по-прежнему отображает пустое пространство слева.Если я выровняю изображение по горизонтали влево, оно действительно отрисовывает весь холст, но мне нужно, чтобы оно было отцентрировано.Можно ли каким-либо образом изменить код, включив в него только содержимое холста, а не поля?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...