我正在尝试使用代码保存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());
画布具有“中心”的默认水平对齐,看起来这是一个问题,因为渲染图像实际上是画布的大小,但包括空白左边距,仅显示实际画布内容的一部分。但是空白区域甚至不是画布本身的一部分。
我尝试将画布包裹在网格中并将其放在中间列中,但它仍然从左侧渲染空白区域。如果我将图像水平对齐,它确实呈现整个画布,但我有点需要它居中。有没有什么办法可以修改代码只包含画布内容而不是边距?