RenderTargetBitmap渲染画布错误

时间:2018-05-21 16:38:25

标签: wpf canvas bitmap

我正在尝试使用代码保存WPF Canvas的内容:

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());

画布具有“中心”的默认水平对齐,看起来这是一个问题,因为渲染图像实际上是画布的大小,但包括空白左边距,仅显示实际画布内容的一部分。但是空白区域甚至不是画布本身的一部分。

我尝试将画布包裹在网格中并将其放在中间列中,但它仍然从左侧渲染空白区域。如果我将图像水平对齐,它确实呈现整个画布,但我有点需要它居中。有没有什么办法可以修改代码只包含画布内容而不是边距?

0 个答案:

没有答案