wpf如何截屏
wpf怎么截屏,winform的有些类在wpf里是不是没有?有为什么用就出错?怎么截屏,是WPF!...
wpf怎么截屏,winform的有些类在wpf里是不是没有?有为什么用就出错?怎么截屏,是WPF!
展开
3个回答
展开全部
WPF 中一样可以调用 WinForm 的类库的
System.Drawing.dll
System.Windows.Forms.dll
下面给出一个示例:
1、获取主屏幕大小
2、截取屏幕图像
3、保存图像文件
下面代码加入某个按钮的Click事件中
var size = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size;
var bitmap = new System.Drawing.Bitmap(size.Width, size.Height);
var g = System.Drawing.Graphics.FromImage(bitmap);
g.CopyFromScreen(0, 0, 0, 0, size);
bitmap.Save("C:\\screen.png", System.Drawing.Imaging.ImageFormat.Png);
System.Drawing.dll
System.Windows.Forms.dll
下面给出一个示例:
1、获取主屏幕大小
2、截取屏幕图像
3、保存图像文件
下面代码加入某个按钮的Click事件中
var size = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size;
var bitmap = new System.Drawing.Bitmap(size.Width, size.Height);
var g = System.Drawing.Graphics.FromImage(bitmap);
g.CopyFromScreen(0, 0, 0, 0, size);
bitmap.Save("C:\\screen.png", System.Drawing.Imaging.ImageFormat.Png);
展开全部
给你个WPF截屏源码的链接,"http://www.silverlightchina.net/html/study/WPF/2012/0821/18308.html "
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
截取屏幕图像方法:、
截图前,先拷贝整个屏幕图像到一个Image中,我们称之为ScreenSnapshot, 然后用户通过鼠标操作,确定一个矩形区域Rect,将Rect传递给函数BitmapSource Clip(Rect r) , Clip函数在ScreenSnapshot上截取Rect对于的那一部分图像,并返回。
WPF没有内置的函数,但可以借用WinForm的Graphics来完成,其将图像截取并保存在一个System.Drawing.Bitmap上,然后我们使用一个辅助函数将System.Drawing.Bitmap转化为WPF版本的System.Media.Imaging.BitmapSource对象就可以了
public static Bitmap GetScreenSnapshot()
{
Rectangle rc = SystemInformation.VirtualScreen;
var bitmap = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(rc.X, rc.Y, 0, 0, rc.Size, CopyPixelOperation.SourceCopy);
}
return bitmap;
}
public static BitmapSource ToBitmapSource(this Bitmap bmp)
{
BitmapSource returnSource;
try
{
returnSource = Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
}
catch
{
returnSource = null;
}
return returnSource;
}
截图前,先拷贝整个屏幕图像到一个Image中,我们称之为ScreenSnapshot, 然后用户通过鼠标操作,确定一个矩形区域Rect,将Rect传递给函数BitmapSource Clip(Rect r) , Clip函数在ScreenSnapshot上截取Rect对于的那一部分图像,并返回。
WPF没有内置的函数,但可以借用WinForm的Graphics来完成,其将图像截取并保存在一个System.Drawing.Bitmap上,然后我们使用一个辅助函数将System.Drawing.Bitmap转化为WPF版本的System.Media.Imaging.BitmapSource对象就可以了
public static Bitmap GetScreenSnapshot()
{
Rectangle rc = SystemInformation.VirtualScreen;
var bitmap = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(rc.X, rc.Y, 0, 0, rc.Size, CopyPixelOperation.SourceCopy);
}
return bitmap;
}
public static BitmapSource ToBitmapSource(this Bitmap bmp)
{
BitmapSource returnSource;
try
{
returnSource = Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions());
}
catch
{
returnSource = null;
}
return returnSource;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询