c#截图工具
厚积薄发,丰富的公用类库积累,助你高效进行系统开发(6)----全屏截图、图标获取、图片打印、页面预览截屏、图片复杂操作等
到目前为止,类库的优化及内容介绍、例子实现同步进行,下面是最近的类库帮助文档整理截图。
1、全屏截图辅助控件 ScreenCaptureWindow
实现效果
1)本辅助类主要是用来方便实现对屏幕进行局部截图的功能,类似QQ截图的效果。
2)截图的时候,底图是当前屏幕的图像,加了灰度背景,当鼠标单击并拉动的时候,出现局部加亮区域,这个就是要截取的图片内容。图片截图后,用户可以实现自定义的保存等操作。
实现代码
1)辅助类提供的方法接口如下所示:
///<summary>
- /// 获取或设置截图的图片对象 ///</summary> public Bitmap BitmapCache ///<summary> /// 图片截图结束后的事件处理 ///</summary> public event EventHandler BitmapCropped; ///<summary> /// 拖动截图开始 ///</summary> public Point DragStart ///<summary> /// 拖动截图结束 ///</summary> public Point DragStop
2)辅助类ScreenCaptureWindow的使用例子代码如下所示(增加图片保存到文件的自定义操作)
- public partial class Form1 : Form { private ScreenCaptureWindow captureWindow = null; public Form1() { InitializeComponent(); } private void captureWindow_BitmapCropped(object sender, EventArgs e) { if (captureWindow.DragStop != captureWindow.DragStart) { bool AutoSaveImages = false; if (AutoSaveImages) { string path = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); string fileName = "Snap_" + DateTime.Now.Ticks.ToString() + Guid.NewGuid().ToString().Substring(, ) + ".jpg"; captureWindow.BitmapCache.Save(Path.Combine(path, fileName), ImageFormat.Jpeg); } } } private void btnScreenCapture_Click(object sender, EventArgs e) { if (captureWindow != null) { captureWindow.BitmapCropped -= new EventHandler(captureWindow_BitmapCropped); captureWindow.Dispose(); captureWindow = null; } if (captureWindow == null) { captureWindow = new ScreenCaptureWindow(); captureWindow.BitmapCropped += new EventHandler(captureWindow_BitmapCropped); } captureWindow = new ScreenCaptureWindow(); captureWindow.Show(); captureWindow.TopMost = true; captureWindow.TopMost = false; } }
最简化的操作就是只是把截图的图片放到在剪切板里面(默认),实现操作如下所示:
private ScreenCaptureWindow captureWindow = null;
- private void btnScreenCapture_Click(object sender, EventArgs e) { captureWindow = new ScreenCaptureWindow(); captureWindow.Show(); captureWindow.TopMost = true; captureWindow.TopMost = false; }
2、本辅助类主要是用来方便实现获取文件、文件夹、扩展名的图标信息
IconReaderHelper。
实现效果
1)本辅助类主要是用来方便实现窗体的各种动画效果,包括创建、关闭、隐藏、移动状态的动画,动画支持滚动、滑动、各种方向变换、透明状态等。
实现代码
1)辅助类提供的方法接口如下所示
///<summary>
- /// 指定图标尺寸大小选项 ///</summary> public enum IconSize ///<summary> /// 指定文件夹是打开还是关闭状态选项 ///</summary> public enum FolderType ///<summary> /// 返回给定文件的图标 ///</summary> ///<param name="name">文件路径名</param> ///<param name="size">大图标还是小图标</param> ///<param name="linkOverlay">是否包含链接图标</param> ///<returns>System.Drawing.Icon</returns> public static Icon GetFileIcon(string name, IconSize size, bool linkOverlay) ///<summary> /// 用于访问系统文件夹图标。 ///</summary> ///<param name="size">大图标还是小图标</param> ///<param name="folderType">文件夹是打开还是关闭状态</param> ///<returns>System.Drawing.Icon</returns> public static Icon GetFolderIcon(IconSize size, FolderType folderType) ///<summary> /// 获取文件或者文件夹图标的显示名称 ///</summary> ///<param name="name">文件或文件夹路径</param> ///<param name="isDirectory">是否为文件夹</param> ///<returns></returns> public static string GetDisplayName(string name, bool isDirectory) #region 后缀名图标操作 ///<summary> /// 添加扩展名小图标对象到ImageList集合中,并返回位置;如果存在,则返回对应的位置。 ///</summary> ///<param name="images"></param> ///<param name="extension"></param> ///<returns></returns> public static int GetIcon(ImageList images, string extension) ///<summary> /// 添加扩展名图标对象到ImageList集合中,并返回位置;如果存在,则返回对应的位置。 ///</summary> ///<param name="images">ImageList集合</param> ///<param name="extension">扩展名</param> ///<param name="largeIcon">是否大图标</param> ///<returns></returns> public static int GetIcon(ImageList images, string extension, bool largeIcon) ///<summary> /// 获取扩展名的图标 ///</summary> ///<param name="extension">扩展名</param> ///<param name="large">是否为大图标</param> ///<returns></returns> public static Icon ExtractIconForExtension(string extension, bool large) ///<summary> /// 获取指定文件的关联图标 ///</summary> ///<param name="stubPath">指定的文件路径</param> ///<param name="large">是否为大图标</param> ///<returns></returns> public static Icon GetAssociatedIcon(string stubPath, bool large) #endregion
2)辅助类IconReaderHelper的使用例子代码如下所示
- private void btnGetIcon_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(this.txtFilPath.Text)) { //获取文件的图标 Icon ico = IconReaderHelper.GetFileIcon(this.txtFilPath.Text, IconReaderHelper.IconSize.Large, false); this.pictureBox1.Image = Bitmap.FromHicon(ico.Handle); //获取对应图标的说明名称 string name = IconReaderHelper.GetDisplayName(this.txtFilPath.Text, false); this.Text = name; } //获取系统文件夹图标 Icon ico2 = IconReaderHelper.GetFolderIcon(IconReaderHelper.IconSize.Large, IconReaderHelper.FolderType.Open); this.pictureBox2.Image = Bitmap.FromHicon(ico2.Handle); } private void btnGetExtensionIcon_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(this.txtExtension.Text)) { //获取扩展名图标 Icon ico = IconReaderHelper.ExtractIconForExtension(this.txtExtension.Text, true); this.pictureBox2.Image = Bitmap.FromHicon(ico.Handle); }
}
2、实现图片打印操作,并提供图片打印预览功能,图片自动根据页面进行居中、缩放、对齐等操作辅助类
ImagePrintHelper
实现效果
1)本辅助类主要是用来方便实现图片打印操作,并提供图片打印预览功能,图片自动根据页面进行居中、缩放、对齐等默认操作。
打印预览的时候,自动调整图片为止,如下:
或者打印对话框
实现代码
1)辅助类提供的方法接口如下所示
- #region 配置参数 ///<summary> /// 将在页面上居中打印输出。 ///</summary> public bool AllowPrintCenter = true; ///<summary> /// 旋转图像,如果它符合页面更好 ///</summary> public bool AllowPrintRotate = true; ///<summary> /// 缩放图像,以更好地适应页面 ///</summary> public bool AllowPrintEnlarge = true; ///<summary> /// 允许打印收缩,以更好适应页面 ///</summary> public bool AllowPrintShrink = true; #endregion ///<summary> /// 构造函数 ///</summary> ///<param name="image">待打印的图片对象</param> public ImagePrintHelper(Image image) : this(image, "test.png") ///<summary> /// 构造函数 ///</summary> ///<param name="image">待打印的图片对象</param> ///<param name="documentname">文档名称</param> public ImagePrintHelper(Image image, string documentname) ///<summary> /// 显示打印对话框,确定则进行打印 ///</summary> ///<returns></returns> public PrinterSettings PrintWithDialog() ///<summary> /// 在预览对话框中预览图片 ///</summary> public void PrintPreview()
2)辅助类ImagePrintHelper的使用例子代码如下所示
- private void btnPrintImage_Click(object sender, EventArgs e) { ImagePrintHelper imagePrint = new ImagePrintHelper(this.pictureBox1.Image, Path.GetFileName(this.txtFilPath.Text)); imagePrint.AllowPrintShrink = true; imagePrint.AllowPrintCenter = true; imagePrint.AllowPrintEnlarge = true; imagePrint.AllowPrintRotate = true; imagePrint.PrintWithDialog();//弹出打印对话框,确认进行打印 } private void btnPrintView_Click(object sender, EventArgs e) { ImagePrintHelper imagePrint = new ImagePrintHelper(this.pictureBox1.Image, Path.GetFileName(this.txtFilPath.Text)); imagePrint.PrintPreview();//弹出打印预览页面 }
2、Web页面预览效果图片抓取辅助类 WebPageCapture和WebPreview
实现效果
1)本辅助类主要是用来方便实现Web页面预览效果图片抓取操作。
实现代码
1)辅助类提供的方法接口如下所示
#region 字段属性
- ///<summary> /// 图片下载完毕的时间处理 ///</summary> public event ImageEventHandler DownloadCompleted; ///<summary> /// 图片处理委托定义 ///</summary> ///<param name="image"></param> public delegate void ImageEventHandler(Image image); ///<summary> /// 浏览区域大小 ///</summary> public Size BrowserSize { get; set; } ///<summary> /// 页面URL地址 ///</summary> public string URL { get; set; } ///<summary> /// 下载的图片对象 ///</summary> public Image Image { get; private set; } #endregion #region 构造函数 ///<summary> /// 构造函数,默认为屏幕大小 ///</summary> public WebPageCapture() : this(Screen.PrimaryScreen.Bounds.Size) { } ///<summary> /// 构造函数,指定浏览区域大小 ///</summary> ///<param name="width">宽度</param> ///<param name="height">高度</param> public WebPageCapture(int width, int height) : this(new Size(width, height)) { } ///<summary> /// 构造函数,指定浏览区域大小 ///</summary> ///<param name="browserSize">浏览区域大小</param> public WebPageCapture(Size browserSize) #endregion ///<summary> /// 下载页面到图片中 ///</summary> public void DownloadPage() ///<summary> /// 下载页面到图片中 ///</summary> ///<param name="url">页面Url地址</param> public void DownloadPage(string url)
2)辅助类WebPageCapture的使用例子代码如下所示
- public partial class FrmWebPreview : Form { private WebPageCapture capture = new WebPageCapture(); public FrmWebPreview() { InitializeComponent(); capture.DownloadCompleted += new WebPageCapture.ImageEventHandler(capture_DownloadCompleted); } void capture_DownloadCompleted(Image image) { this.pictureBox1.Image = image; } private void btnSnap1_Click(object sender, EventArgs e) { if (this.txtUrl.Text.Length == ) return; capture.DownloadPage(this.txtUrl.Text);
}
3) 辅助类WebPreview的使用例子代码如下所示
- private void btnSnap2_Click(object sender, EventArgs e) { if (this.txtUrl.Text.Length == ) return; this.pictureBox1.Image = WebPreview.GetWebPreview(new Uri(this.txtUrl.Text), Screen.PrimaryScreen.Bounds.Size); }
2、图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类 ImageHelper
实现效果
1)本辅助类主要是用来方便实现图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作。
2)基本图片所有的相关操作,均可在该辅助类中找到,该辅助类具有专业、全面、封装良好等特点。
实现代码
1)辅助类提供的方法接口如下所示
///<summary>
- /// 图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类 ///</summary> public class ImageHelper { #region 图片比较 ///<summary> /// 对比两张图片 ///</summary> ///<param name="bmp1">The first bitmap image</param> ///<param name="bmp2">The second bitmap image</param> ///<returns>CompareResult</returns> public static CompareResult CompareTwoImages(Bitmap bmp1, Bitmap bmp2) #endregion #region 图片缩放 ///<summary> /// 按比例调整图片大小 ///</summary> ///<param name="imgPhoto">原始图片对象.</param> ///<param name="Percent">调整比例</param> ///<returns></returns> public static Image ResizeImageByPercent(Image imgPhoto, int Percent) ///<summary> /// 缩放、裁切图片 ///</summary> ///<param name="originalImage">原始图片对象</param> ///<param name="width">宽度</param> ///<param name="height">高度</param> ///<param name="mode">调整模式</param> ///<returns></returns> public static Image ResizeImageToAFixedSize(Image originalImage, int width, int height, ScaleMode mode) #endregion #region 创建缩略图 ///<summary> /// 生成缩略图 ///</summary> ///<param name="originalImagePath">源图路径(物理路径)</param> ///<param name="thumbnailPath">缩略图路径(物理路径)</param> ///<param name="width">缩略图宽度</param> ///<param name="height">缩略图高度</param> ///<param name="mode">生成缩略图的方式</param> public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, ScaleMode mode) ///<summary> /// 生成缩略图 ///</summary> ///<param name="originalImagePath">源图路径(物理路径)</param> ///<param name="thumbnailPath">缩略图路径(物理路径)</param> ///<param name="width">缩略图宽度</param> ///<param name="height">缩略图高度</param> ///<param name="mode">生成缩略图的方式</param> public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, ScaleMode mode, System.Drawing.Imaging.ImageFormat format) #endregion #region 图片水印 ///<summary> /// 添加文字水印 默认字体:Verdana 12号大小 斜体 黑色 位置:右下角 ///</summary> ///<param name="originalImage">Image</param> ///<param name="text">水印字</param> ///<returns></returns> public static Image WatermarkText(Image originalImage, string text) ///<summary> /// 添加文字水印 默认字体:Verdana 12号大小 斜体 黑色 ///</summary> ///<param name="originalImage">Image</param> ///<param name="text">水印字</param> ///<param name="position">水印位置</param> ///<returns></returns> public static Image WatermarkText(Image originalImage, string text, WatermarkPosition position) ///<summary> /// 添加文字水印 ///</summary> ///<param name="originalImage">Image</param> ///<param name="text">水印字</param> ///<param name="position">水印位置</param> ///<param name="font">字体</param> ///<param name="brush">颜色</param> ///<returns></returns> public static Image WatermarkText(Image originalImage, string text, WatermarkPosition position, Font font, Brush brush) ///<summary> /// 添加图片水印(位置默认右下角) ///</summary> ///<param name="originalImage">Image</param> ///<param name="watermarkImage">水印Image</param> ///<returns></returns> public static Image WatermarkImage(Image originalImage, Image watermarkImage) ///<summary> /// 添加图片水印 ///</summary> ///<param name="originalImage">Image</param> ///<param name="watermarkImage">水印Image</param> ///<param name="position">位置</param> ///<returns></returns> public static Image WatermarkImage(Image originalImage, Image watermarkImage, WatermarkPosition position) #endregion #region 复制到剪切板 ///<summary> /// 复制指定的图片对象到剪切板 ///</summary> ///<param name="img">复制的图片对象</param> public static void CopyToClipboard(Image img) #endregion #region 其他操作 ///<summary> /// 获取图片编码解码器,保存JPG时用 ///</summary> ///<param name="mimeType"></param> ///<returns>得到指定mimeType的ImageCodecInfo </returns> public static ImageCodecInfo GetCodecInfo(string mimeType) ///<summary> /// 设置图片透明度 ///</summary> ///<param name="imgPic">原始图片对象</param> ///<param name="imgOpac">透明度</param> ///<returns></returns> public static Image SetImgOpacity(Image imgPic, float imgOpac) ///<summary> /// 修改图片亮度 ///</summary> ///<param name="bmp">原始位图对象</param> ///<param name="value">亮度值</param> ///<returns></returns> public static Bitmap ChangeBrightness(Bitmap bmp, int value) #region 改变图片大小 ///<summary> /// 改变图片大小 ///</summary> ///<param name="img">原始图片对象</param> ///<param name="width">改变的宽度</param> ///<param name="height">改变的高度</param> ///<returns></returns> public static Image ChangeImageSize(Image img, int width, int height) ///<summary> /// 改变图片大小 ///</summary> ///<param name="img">原始图片对象</param> ///<param name="width">改变的宽度</param> ///<param name="height">改变的高度</param> ///<param name="preserveSize">限制的最小宽度或高度</param> ///<returns></returns> public static Image ChangeImageSize(Image img, int width, int height, bool preserveSize) ///<summary> /// 改变图片大小(按比例缩放) ///</summary> ///<param name="img">原始图片对象</param> ///<param name="percentage">大小比例</param> ///<returns></returns> public static Image ChangeImageSize(Image img, float percentage) #endregion ///<summary> /// 剪切图片 ///</summary> ///<param name="img">原始图片对象</param> ///<param name="rect">剪切区域</param> ///<returns></returns> public static Image CropImage(Image img, Rectangle rect) ///<summary> /// 剪裁 -- 用GDI+ ///</summary> ///<param name="b">原始Bitmap</param> ///<param name="StartX">开始坐标X</param> ///<param name="StartY">开始坐标Y</param> ///<param name="iWidth">宽度</param> ///<param name="iHeight">高度</param> ///<returns>剪裁后的Bitmap</returns> public static Bitmap CropImage(Bitmap b, int StartX, int StartY, int iWidth, int iHeight) public static Image AddCanvas(Image img, int size) ///<summary> /// 旋转图片 ///</summary> ///<param name="img">待旋转的图片对象</param> ///<param name="theta">旋转角度</param> ///<returns></returns> public static Bitmap RotateImage(Image img, float theta) private static Rectangle BoundingBox(Image img, Matrix matrix) ///<summary> /// 获取所有屏幕的矩形宽度 ///</summary> ///<returns></returns> public static Rectangle GetScreenBounds() ///<summary> /// 使窗口背景透明 ///</summary> ///<param name="hWnd">窗口句柄</param> ///<param name="image">透明图片</param> ///<returns></returns> public static Bitmap MakeBackgroundTransparent(IntPtr hWnd, Image image) ///<summary> /// 保存打印图片文件 ///</summary> ///<param name="image">图片对象</param> ///<param name="transColor">透明色</param> ///<param name="dpi">打印的dpi</param> ///<param name="path">保存文件的路径</param> public static void SaveOneInchPic(Image image, Color transColor, float dpi, string path) #endregion #region BASE64编码转换 ///<summary> /// Base64编码转换到Image对象 ///</summary> ///<param name="ImgBase64Str"></param> ///<returns></returns> public static Bitmap Base64StrToBmp(string ImgBase64Str) ///<summary> /// 从文件中转换图片对象到Base64编码 ///</summary> ///<param name="ImgName"></param> ///<returns></returns> public static string ImageToBase64Str(string ImgName) ///<summary> /// 转换图片对象到Base64编码 ///</summary> ///<param name="Img"></param> ///<returns></returns> public static string ImageToBase64Str(Image Img) #endregion #region 色彩处理 ///<summary> /// 设置图形颜色 边缘的色彩更换成新的颜色 ///</summary> ///<param name="p_Image">图片</param> ///<param name="p_OldColor">老的边缘色彩</param> ///<param name="p_NewColor">新的边缘色彩</param> ///<param name="p_Float">溶差</param> ///<returns>清理后的图形</returns> public static Image SetImageColorBrim(Image p_Image, Color p_OldColor, Color p_NewColor, int p_Float) ///<summary> /// 设置图形颜色 所有的色彩更换成新的颜色 ///</summary> ///<param name="p_Image">图片</param> ///<param name="p_OdlColor">老的颜色</param> ///<param name="p_NewColor">新的颜色</param> ///<param name="p_Float">溶差</param> ///<returns>清理后的图形</returns> public static Image SetImageColorAll(Image p_Image, Color p_OdlColor, Color p_NewColor, int p_Float) ///<summary> /// 设置图形颜色 坐标的颜色更换成新的色彩 (漏斗) ///</summary> ///<param name="p_Image">新图形</param> ///<param name="p_Point">位置</param> ///<param name="p_NewColor">新的色彩</param> ///<param name="p_Float">溶差</param> ///<returns>清理后的图形</returns> public static Image SetImageColorPoint(Image p_Image, Point p_Point, Color p_NewColor, int p_Float) ///<summary> /// SetImageColorPoint 循环调用 检查新的坐标是否符合条件 符合条件会写入栈p_ColorStack 并更改颜色 ///</summary> ///<param name="p_DataBytes">数据区</param> ///<param name="p_Stride">行扫描字节数</param> ///<param name="p_ColorStack">需要检查的位置栈</param> ///<param name="p_X">位置X</param> ///<param name="p_Y">位置Y</param> ///<param name="p_OldColor">老色彩</param> ///<param name="p_NewColor">新色彩</param> ///<param name="p_Float">溶差</param> private static void SetImageColorPoint(byte[] p_DataBytes, int p_Stride, Stack<Point> p_ColorStack, int p_X, int p_Y, Color p_OldColor, Color p_NewColor, int p_Float) ///<summary> /// 检查色彩(可以根据这个更改比较方式 ///</summary> ///<param name="p_CurrentlyColor">当前色彩</param> ///<param name="p_CompareColor">比较色彩</param> ///<param name="p_Float">溶差</param> ///<returns></returns> private static bool ScanColor(Color p_CurrentlyColor, Color p_CompareColor, int p_Float) #endregion
- #region 图像压缩 ///<summary> /// 将Bitmap对象压缩为JPG图片类型 ///</summary> ///</summary> ///<param name="bmp">源bitmap对象</param> ///<param name="saveFilePath">目标图片的存储地址</param> ///<param name="quality">压缩质量,越大照片越清晰,推荐80</param> public static void CompressAsJPG(Bitmap bmp, string saveFilePath, int quality) ///<summary> /// 将inputStream中的对象压缩为JPG图片类型 ///</summary> ///<param name="inputStream">源Stream对象</param> ///<param name="saveFilePath">目标图片的存储地址</param> ///<param name="quality">压缩质量,越大照片越清晰,推荐80</param> public static void CompressAsJPG(Stream inputStream, string saveFilePath, int quality) #endregion #region 图片转换 ///<summary> /// 把Image对象转换为Byte数组 ///</summary> ///<param name="image">图片Image对象</param> ///<returns>字节集合</returns> public static byte[] ImageToBytes(System.Drawing.Image image) ///<summary> /// 转换Byte数组到Image对象 ///</summary> ///<param name="bytes">字节数组</param> ///<returns>Image图片</returns> public static System.Drawing.Image ImageFromBytes(byte[] bytes) ///<summary> /// 转换地址(文件路径或者URL地址)到Image对象 ///</summary> ///<param name="url">图片地址(文件路径或者URL地址)</param> ///<returns>Image对象</returns> public static System.Drawing.Image ImageFromUrl(string url)
#endregion
2) 辅助类ImageHelper的使用例子代码如下所示
- private void btnLoadBitmap_Click(object sender, EventArgs e) { //加载图片 string file = FileDialogHelper.OpenImage(); if (!string.IsNullOrEmpty(file)) { pictureBox1.Image = Image.FromFile(file); } } private void btnWaterMark_Click(object sender, EventArgs e) { //图片水印效果 string file = FileDialogHelper.OpenImage(); if (!string.IsNullOrEmpty(file)) { this.pictureBox2.Image = ImageHelper.WatermarkImage(this.pictureBox1.Image, Image.FromFile(file)); } } private void btnTextWatermark_Click(object sender, EventArgs e) { //文字水印效果 this.pictureBox2.Image = ImageHelper.WatermarkText(this.pictureBox1.Image, "测试水印效果"); } private void btnZoom_Click(object sender, EventArgs e) { //按比例放大图片 this.pictureBox2.Image = ImageHelper.ResizeImageByPercent(this.pictureBox1.Image, ); } private void btnRotate_Click(object sender, EventArgs e) { //旋转图片 this.pictureBox2.Image = ImageHelper.RotateImage(this.pictureBox1.Image, ); }
2、弹出打印窗体的预览对话框辅助类 PrintFormHelper
实现效果
1)本辅助类主要是用来方便实现窗体界面打印的功能。
2)窗体界面打印提供通用的打印预览功能。
实现代码
1)辅助类提供的方法接口如下所示
///<summary>
- /// Winform窗口打印辅助类 ///</summary> public class PrintFormHelper { ///<summary> /// 弹出打印窗体的预览对话框 ///</summary> ///<param name="form"></param> public static void Print(Form form) }
2) 辅助类PrintFormHelper的使用例子代码如下所示
- private void btnPrintForm_Click(object sender, EventArgs e) { try { this.Cursor = Cursors.WaitCursor; PrintFormHelper.Print(this);//打印当前窗体 } catch (Exception ex) { MessageBox.Show(this, ex.Message); } finally { this.Cursor = Cursors.Default; }
}
2、抓取整个屏幕或指定窗口,并可把抓取的图片保存到文件等操作辅助类 ScreenCapture实现效果
1)本辅助类主要是用来方便实现抓取整个屏幕或指定窗口,并可把抓取的图片保存到文件等操作
2)该辅助类类非常方便实现对桌面、指定窗口进行屏幕截图,并可以指定保存路径、指定图片格式、后缀名等属性对截图进行保存,适合用于对屏幕监控等相关的操作中。
实现代码
1)辅助类提供的方法接口如下所示
///<summary>
- /// 图片保存的路径,默认为C:\\CaptureImages ///</summary> public string ImageSavePath ///<summary> /// 图片的后缀名,如果为空,使用图片格式作为后缀名 ///</summary> public string ImageExtension ///<summary> /// 图片保存的格式 ///</summary> public ImageFormat ImageFormat ///<summary> /// 抓取桌面整个屏幕截图到一个图片对象中 ///</summary> ///<returns></returns> public Image CaptureScreen() ///<summary> /// 抓取桌面整个指定窗口的截图到一个图片对象中 ///</summary> ///<param name="handle">指定窗口的句柄</param> ///<returns></returns> public Image CaptureWindow(IntPtr handle) ///<summary> /// 抓取桌面整个指定窗口的截图,并保存到文件中 ///</summary> ///<param name="handle"></param> ///<param name="filename"></param> ///<param name="format"></param> public void CaptureWindowToFile(IntPtr handle, string filename, ImageFormat format) ///<summary> /// 根据属性配置自动保存图片 ///</summary> public void AutoCaptureScreen() ///<summary> /// 抓取桌面整个指定窗口的截图,并保存到文件中 ///</summary> ///<param name="filename"></param> ///<param name="format"></param> public void CaptureScreenToFile(string filename, ImageFormat format)
2)辅助类ScreenCapture的使用例子代码如下所示
- ScreenCapture capture = new ScreenCapture();
Image image = capture.CaptureWindow(form.Handle);

c#截图工具的更多相关文章
- 在Ubuntu|CentOS上安装Shutter截图工具及快捷键设置
简介 Shutter前身叫GScrot,它是一款相当棒的截图软件. 通过Shutter,你可以截取包括选定区域.全屏幕.窗口.窗口内的控件甚至网页的图像.通过内置的强大插件机制,你可以在截图后,对图像 ...
- google浏览器截图工具 Open Screenshot(代码截图)
有的时候特别想把自己写的代码保存为图片,但是代码的内容很长,用普通的截图工具只能一次一次的拼接起来,太麻烦了.这里使用了Google的截图插件,很好用. 或者使用360极速浏览器-->保存网页也 ...
- Ubuntu菜鸟入门(一)—— 截图工具安装
Ubuntu截图工具Shutter 1.添加安装包软件源 sudo add-apt-repository ppa:shutter/ppa 2.更新源并安装 shutter sudo apt-get u ...
- linux deepin-scrot 截图工具
1.下载 .deb 安装包: 点击这里 (如果提示缺少依赖,去终端安装相应的依赖) 2. 设置快捷键Alt+Ctrl+A 1. 系统设置 -> 键盘设置 -> 自定义快捷键 -> ...
- 创建Windows截图工具的快捷方式
日常生活中我们会用到好多截图,一般截图我们用QQ自带截图较多,但许多人都忽视了电脑自带截图功能.在我的电脑-->附件-->截图工具 按照上述方式找截图工具比较繁琐,今天我们可以通过快捷 ...
- ubuntu 14.04 安装截图工具 Shutter及使用
一.安装截图工具 Shutter 1. 添加安装包软件源 sudo add-apt-repository ppa:shutter/ppa 1 2. 更新源并安装 shutter sudo apt-ge ...
- linux截图工具scrot
SCROT截图工具 安装命令 sudo apt-get install scrot 截图命令使用说明: 1.抓取整个桌面: scrot ~/Pictures/pic1.jpg2.抓取窗口: ...
- QQ截图工具提取
今晚关了QQ,突然想截个图,但是呢又不想打开QQ了,于是在网上搜索截图工具,下载了几个,感觉都没有QQ截图好用.索性直接百度QQ截图工具提取,看到有些网站上有提取的,里面的文件有点多,不是我中意的,突 ...
- win7系统自带截图工具快捷键是什么?怎么设置快捷键
win7自带的截图工具很好,很强大,比从网上下载的截图工具好用多了,很少会出现问题.但是它能不能像QQ截图工具一样可以使用快捷键呢?今天小编和大家分享下心得,希望能够给你的工作带来快捷. 工具/原料 ...
- ubuntu 下截图工具的使用
我个人觉得,ubuntu自带的截图工具功能就不错.具体使用如下: 在ubuntu下的系统设置中找到硬盘区的“键盘”处,进入该设置界面如下: 选择标签“快捷键”,进入新设置界面如下所示: 之后,你就可以 ...
随机推荐
- Cloud BOS平台-自定义用户联系对象
适用业务场景:新增用户时,联系对象类型默认为:职员.客户.供应商.客户需要增加一类"承运商",类型选择"承运商"时,联系对象只显示相应的承运商."承运 ...
- 洛谷P3094 [USACO13DEC]假期计划Vacation Planning
题目描述 有N(1 <= N <= 200)个农场,用1..N编号.航空公司计划在农场间建立航线.对于任意一条航线,选择农场1..K中的农场作为枢纽(1 <= K <= 100 ...
- js1:对象的学习,构造函数,继承构造函数【使用教材:JavaScript深度剖析第2版】
原文发布时间为:2008-11-08 -- 来源于本人的百度文章 [由搬家工具导入] <html> <head> <title>js</title> & ...
- hdu 4923 Room and Moor [ 找规律 + 单调栈 ]
传送门 Room and Moor Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Oth ...
- CPM、CPC、CPA、PFP、CPS、CPL、CPR介绍
一个网络媒体(网站)会包含有数十个甚至成千上万个页面,网络广告所投放的位置和价格 就牵涉到特定的页面以及浏览人数的多寡.这好比平面媒体(如报纸)的“版位”.“发行 量”,或者电波媒体(如电视)的“时段 ...
- mysql 修改管理员密码
mysql 修改管理员密码 本次学习环境: windows 7系统.mysql 5.7.14. 一.如果是忘记了用户密码: (1).关闭正在运行的MySQL服务. 方法一:可以直接操作wamp软件,左 ...
- Linux 端口开放
Linux(CentOS): 系统缺省值为32768-61000. 修改方法: 在/etc/sysctl.conf中,增加以下配置:(开放20000-50000为完成端口) net.ipv4.ip_l ...
- dpr——设备像素比(device pixel ratio)
设备像素比 = 物理像素 / 逻辑像素 1.物理像素 显示器上最小的物理显示单元(像素颗粒),在操作系统的调度下,每一个设备像素都有自己的颜色值和亮度值. 例如:手机大小固定,物理像素越高,画面越清晰 ...
- union关键字和字节大小端序的确定
union 关键字的用法与struct 的用法非常类似. union 维护足够的空间来置放多个数据成员中的“一种”,而不是为每一个数据成员配置空间,在union 中所有的数据成员共用一个空间,同一时间 ...
- MAC地址泛红攻击
一.环境 IP地址: Windows10 IP:10.13.153.55 Windows7: IP:192.168.83.130 Linux: IP:192.168.83.129 ...