WPF RenderTargetBitmap右侧和底部的黑条

时间:2016-09-02 06:49:02

标签: wpf vb.net

我想从WPF用户控件中保存图像。它有效但我的右侧和底部都有黑条。如果我更改dpiX(96)和dpiY(96)它可以工作,但是当我最大化窗口时,它又错了(然后缺少一些用户控件)。

这就是我将图像保存为位图的方式:

Dim parentWindow As Window = Window.GetWindow(_Map)
Dim rtb As New RenderTargetBitmap(parentWindow.ActualWidth, parentWindow.ActualHeight, 96, 96, PixelFormats.Pbgra32)
rtb.Render(_Map)
Dim ms As New MemoryStream()
Dim bp As New BmpBitmapEncoder()
bp.Frames.Add(BitmapFrame.Create(rtb))
bp.Save(ms)
Dim saveMap As New Bitmap(ms)

1 个答案:

答案 0 :(得分:0)

窗口的宽度和高度略大于UserControl,因为它包含标题栏和边框。如果您使用控件的尺寸,它可以正常工作:

Dim rtb As New RenderTargetBitmap(_Map.ActualWidth, _Map.ActualHeight, 96, 96, PixelFormats.Pbgra32)

我建议您在渲染前使用当前或所需尺寸调用MeasureArrange,确保控件正确布局。

如果您使用的是控件的LayoutTransformRenderTransform属性,则可能需要进行其他尺寸计算。

顺便说一句:WPF总是使用96 DPI进行大小计算,所以你不应该改变它。