C# WPF将控件的图像复制到位图

C# WPF将控件的图像复制到位图,c#,wpf,C#,Wpf,我使用的是第三方控件,我想从该控件创建一个位图(可以放在剪贴板上,也可以保存到png) 我尝试过使用RenderBitmapTarget,但它只会在控件在屏幕上呈现时复制控件(我的网格比屏幕大) 我的RenderBitmapTarget代码如下所示: RenderTargetBitmap rtb = new RenderTargetBitmap((int)control.ActualWidth, (int)control.ActualHeight, 96, 96, PixelFormats.Pb

我使用的是第三方控件,我想从该控件创建一个位图(可以放在剪贴板上,也可以保存到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
构造函数中),并为控件指定新的宽度/高度,但都只是在更大的画布上生成了相同的图像


有什么想法吗?

这是我最后得到的

        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;

你尝试过这个技巧吗?类似的…我最终得到的是将控件的高度和宽度设置为double.NaN(即“自动”)调用它的UpdateLayout函数,然后渲染到RenderTargetBitmap。我会在允许的情况下发布解决方案。感谢发布解决方案。