gpt4 book ai didi

c# - 如何使用 C# 在 wpf 中捕获 WindowsFormsHost 的图像

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:36 26 4
gpt4 key购买 nike

我在 WPF 应用程序中有一个 WindowsFormsHost 面板,其图形是通过第三方 dll 绘制的。我想捕获托管面板。我使用 {RenderTargetBitmap} 尝试过它,但它不起作用并且只在面板后面保存网格。

我也试过使用 {DrawToBitmap} 方法,如下所示,但它只给出空白区域。

path = @"E:\\whatever\\test.png";
var bmp = new System.Drawing.Bitmap((int)MyUserControl.myPanel.Width,(int)MyUserControl.myPanel.Height);
MyUserControl.myPanel.DrawToBitmap(bmp, new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height));
bmp.Save(path, System.Drawing.Imaging.ImageFormat.Png);

请注意,此面板是在代码隐藏中添加的,而不是在 xaml 设计器中添加的。

我做错了什么或者还有其他解决方案吗?任何帮助。我能找到类似的问题,但找不到答案。

编辑:我也不想从屏幕上复制。让我知道这是否可能?

最佳答案

像这样?

需要引用 System.Drawing 和适当的用法:

using System.Drawing;
using System.Drawing.Imaging;

然后你可以在任何你需要的地方添加它:

        using (Bitmap newBmp = new Bitmap((int)Width, (int)Height, PixelFormat.Format24bppRgb))
{
System.Drawing.Point topLeftPoint = new System.Drawing.Point((int)Top, (int)Left);
var graphics = Graphics.FromImage(newBmp);
graphics.CopyFromScreen(topLeftPoint, System.Drawing.Point.Empty, new System.Drawing.Size((int)Width, (int)Height));
newBmp.Save(@"c:\mypath\blah\", ImageFormat.Png);
}

关于c# - 如何使用 C# 在 wpf 中捕获 WindowsFormsHost 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22404293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com