WPF将控件的图像复制到位图
我正在使用第三方控件,我想从控件创建一个位图(放在剪贴板上或保存到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
构造函数中,并为控件指定新的宽度/高度,但两者都在较大的canvas上产生了相同的图像。
有什么想法吗?
这是我最终得到的……
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;