如何在WPF控件中进行屏幕截图?

6 浏览
0 Comments

如何在WPF控件中进行屏幕截图?

我使用Bing地图WPF控件创建了一个WPF应用程序。

我希望能够仅截取Bing地图控件。

我使用以下代码进行截图:

// 存储地图控件的尺寸
int Width = (int)MyMap.RenderSize.Width;
int Height = (int)MyMap.RenderSize.Height;
System.Windows.Point relativePoint = MyMap.TransformToAncestor(Application.Current.MainWindow).Transform(new System.Windows.Point(0, 0));
int X = (int)relativePoint.X;
int Y = (int)relativePoint.Y;
Bitmap Screenshot = new Bitmap(Width, Height);
Graphics G = Graphics.FromImage(Screenshot);
// 剪切所需区域
G.CopyFromScreen(X, Y, 0, 0, new System.Drawing.Size(Width, Height), CopyPixelOperation.SourceCopy);
string fileName = "C:\\myCapture.bmp";
System.IO.FileStream fs = System.IO.File.Open(fileName, System.IO.FileMode.OpenOrCreate);
Screenshot.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp);
fs.Close();

我的问题:

WidthHeight的值似乎是错误的。

生成的截图似乎使用了错误的坐标。

我的截图:

我的截图

我期望的结果:

期望的截图

为什么会得到这样的结果?

我尝试了发布模式,并且没有使用Visual Studio,结果是相同的。

0