我正在使用第三方控件,我想从控件创建一个位图(放在剪贴板上或保存到png)。
我尝试使用RenderBitmapTarget
,但它只会复制屏幕上呈现的控件(我的网格比屏幕大)。
我的RenderBitmapTarget
代码如下所示:
RenderTargetBitmap rtb = new RenderTargetBitmap((int)control.ActualWidth, (int)control.ActualHeight, 96, 96, PixelFormats.Pbgra32);
rtb.Render(control);
PngBitmapEncoder png = new PngBitmapEncoder();
png.Frames.Add(BitmapFrame.Create(rtb));
MemoryStream stream = new MemoryStream();
png.Save(stream);
Image image = Image.FromStream(stream);
我尝试指定一个更大的尺寸(在RenderTargetBitmap
构造函数中,并为控件指定新的宽度/高度,但两者都在较大的画布上产生了相同的图像。
有什么想法吗?
答案 0 :(得分:3)
以下是我最终的结果...
tempWidth = myControl.ActualWidth;
tempHeight = myControl.ActualHeight;
myControl.Width = double.NaN;
myControl.Height = double.NaN;
myControl.UpdateLayout();
RenderTargetBitmap rtb = new RenderTargetBitmap((int)myControl.ActualWidth, (int)myControl.ActualHeight, 96, 96, PixelFormats.Pbgra32);
rtb.Render(myControl);
PngBitmapEncoder pbe = new PngBitmapEncoder();
pbe.Frames.Add(BitmapFrame.Create(rtb));
MemoryStream stream = new MemoryStream();
pbe.Save(stream);
image = (System.Drawing.Bitmap)System.Drawing.Image.FromStream(stream);
CEGrid.Width = tempWidth;
CEGrid.Height = tempHeight;