如何拍摄WPF控件的屏幕截图?

沃尔特·法比奥·西蒙尼

我使用Bing贴图WPF控件创建了WPF应用程序。我只想截图Bing地图控件。

正在使用此代码制作屏幕截图:

// Store the size of the map control
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);
// snip wanted area
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,结果是一样的。

谢里登

屏幕截图是屏幕快照……屏幕上的所有内容您想要的是保存单个图像,UIElement然后可以使用RenderTargetBitmap.RenderMethod来完成Visual幸运的是,此方法采用一个输入参数,它是所有UIElements的基类之一因此,假设您要保存一个.png文件,可以执行以下操作:

RenderTargetBitmap renderTargetBitmap = 
    new RenderTargetBitmap(width, height, 96, 96, PixelFormats.Pbgra32);
renderTargetBitmap.Render(yourMapControl); 
PngBitmapEncoder pngImage = new PngBitmapEncoder();
pngImage.Frames.Add(BitmapFrame.Create(renderTargetBitmap));
using (Stream fileStream = File.Create(filePath))
{
    pngImage.Save(fileStream);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何拍摄WPF控件的屏幕截图?

来自分类Dev

如何在vb.net,WPF中拍摄屏幕截图?

来自分类Dev

如何拍摄ImageView的屏幕截图?

来自分类Dev

如何拍摄imageView的屏幕截图?

来自分类Dev

如何拍摄整个屏幕的屏幕截图

来自分类Dev

如何拍摄快门菜单的屏幕截图?

来自分类Dev

如何使用Javascript拍摄网页的屏幕截图

来自分类Dev

如何拍摄指标菜单的屏幕截图?

来自分类Dev

如何以低质量拍摄屏幕截图

来自分类Dev

如何拍摄全屏视频的屏幕截图?

来自分类Dev

如何在Flutter中拍摄屏幕截图?

来自分类Dev

如何拍摄指标菜单的屏幕截图?

来自分类Dev

如何拍摄全屏视频的屏幕截图?

来自分类Dev

如何拍摄快门菜单的屏幕截图?

来自分类Dev

如何使用Javascript拍摄网页的屏幕截图

来自分类Dev

如何全屏拍摄YouTube视频的屏幕截图?

来自分类Dev

如何使用Aero特效拍摄屏幕截图?

来自分类Dev

如何拍摄gksudo窗口的屏幕截图?

来自分类Dev

拍摄UIPickerView的屏幕截图

来自分类Dev

C#拍摄WPF应用程序的屏幕截图

来自分类Dev

C#拍摄WPF应用程序的屏幕截图

来自分类Dev

如何在Node JS中拍摄整个屏幕的屏幕截图?

来自分类Dev

如何以编程方式拍摄iPad主屏幕的屏幕截图?

来自分类Dev

如何拍摄Windows 10登录屏幕的屏幕截图?

来自分类Dev

iOS7如何拍摄OpenGLES屏幕截图。

来自分类Dev

如何使用QTP拍摄应用程序的屏幕截图?

来自分类Dev

如何降低使用硒拍摄的屏幕截图的质量或尺寸?

来自分类Dev

如何在Windows Store应用中拍摄屏幕截图

来自分类Dev

如何使用Puppeteer拍摄数百张屏幕截图?