Han*_*ank 5 .net wpf screenshot
我有一个Frame元素在WPF应用程序中显示一个html页面,并希望将Frame的屏幕截图保存为图像。
在谷歌的帮助下,我有以下代码:
Size size = new Size(PreviewFrame.ActualWidth, PreviewFrame.ActualHeight);
PreviewFrame.Measure(size);
PreviewFrame.Arrange(new Rect(size));
var renderBitmap = new RenderTargetBitmap(
(int)size.Width,
(int)size.Height,
96d,
96d,
PixelFormats.Pbgra32);
renderBitmap.Render(PreviewFrame);
Run Code Online (Sandbox Code Playgroud)
但是我得到的只是一张空白图片。
关于如何解决此代码和/或以其他方式将网页捕获为应用程序中的图像的任何想法?
原来 GDIGraphics类有一个CopyFromScreen方法可以很好地捕获Frame的内容:
var topLeftCorner = PreviewFrame.PointToScreen(new System.Windows.Point(0, 0));
var topLeftGdiPoint = new System.Drawing.Point((int)topLeftCorner.X, (int)topLeftCorner.Y);
var size = new System.Drawing.Size((int)PreviewFrame.ActualWidth, (int)PreviewFrame.ActualHeight);
var screenShot = new Bitmap((int)PreviewFrame.ActualWidth, (int)PreviewFrame.ActualHeight);
using (var graphics = Graphics.FromImage(screenShot)) {
graphics.CopyFromScreen(topLeftGdiPoint, new System.Drawing.Point(),
size, CopyPixelOperation.SourceCopy);
}
screenShot.Save(@"C:\screenshot.png", ImageFormat.Png);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2624 次 |
| 最近记录: |