C#实现截图帮助类

 更新时间:2022年07月05日 11:28:31   作者:edielei  
这篇文章介绍了C#实现截图帮助类的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

帮助类实现:

注意修改命名空间

using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    class ScreenCapture
    {
        private Bitmap _screenshot = null;
 
        /// <summary>
        /// 截取全屏
        /// </summary>
        /// <returns>返回值</returns>
        public Bitmap CaptureScreen()
        {
            return Capture(Rectangle.Empty, false);
        }
 
        /// <summary>
        /// 截取全屏并保存
        /// </summary>
        /// <param name="fileName">文件路径</param>
        /// <returns></returns>
        public Bitmap CaptureScreen(string fileName)
        {
            Bitmap screenshot = Capture(Rectangle.Empty, false);
            saveImage(fileName, screenshot);
            return screenshot;
        }
 
        /// <summary>
        /// 截屏到剪切板
        /// </summary>
        public void CopyToClipboard()
        {
            if (this._screenshot != null)
                Clipboard.SetImage(this._screenshot);
            else if (this._screenshot == null)
                MessageBox.Show("No screenshot found. Please take a screenshot first.", "Copy to Clipboard");
        }
 
        /// <summary>
        /// 区域截屏
        /// </summary>
        /// <param name="rect">区域范围</param>
        /// <returns>返回值</returns>
        public Bitmap CaptureRectangle(Rectangle rect)
        {
            return Capture(rect, true);
        }
 
        /// <summary>
        /// 区域截屏
        /// </summary>
        /// <param name="rect">区域范围</param>
        /// <param name="fileName">文件路径</param>
        /// <returns>返回值</returns>
        public Bitmap CaptureRectangle(Rectangle rect, string fileName)
        {
            Bitmap screenshot = Capture(rect, true);
            saveImage(fileName, screenshot);
            return screenshot;
        }
 
        private Bitmap Capture(Rectangle rect, bool isRect)
        {
            int screenWidth = Screen.PrimaryScreen.Bounds.Width;
            int screenHeight = Screen.PrimaryScreen.Bounds.Height;
 
            Bitmap screenshot = null;
 
            if(!isRect)
                screenshot = new Bitmap(screenWidth, screenHeight);
            else if(isRect)
                screenshot = new Bitmap(rect.Width, rect.Height);
 
            Graphics g = Graphics.FromImage(screenshot);
            if (!isRect)
            {
                g.CopyFromScreen(Point.Empty, Point.Empty, screenshot.Size);
            }
            else if (isRect)
            {
                g.CopyFromScreen(new Point(rect.X, rect.Y), Point.Empty, rect.Size);
            }
 
            this._screenshot = screenshot;
 
            return screenshot;
        }
 
        private void saveImage(string fileName, Bitmap screenshot)
        {
            string ext = System.IO.Path.GetExtension(fileName);;
            ext = ext.ToLower();
 
            if (ext == ".jpg" || ext == ".jpeg")
                screenshot.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
            else if(ext == ".gif")
                screenshot.Save(fileName, System.Drawing.Imaging.ImageFormat.Gif);
            else if(ext == ".png")
                screenshot.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
            else if (ext == ".bmp")
                screenshot.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp);
            else if (ext == ".tiff")
                screenshot.Save(fileName, System.Drawing.Imaging.ImageFormat.Tiff);
        }
    }
}

到此这篇关于C#实现截图帮助类的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持程序员之家。

相关文章

  • C#实现读写CSV文件的方法详解

    C#实现读写CSV文件的方法详解

    项目中经常遇到CSV文件的读写需求,其中的难点主要是CSV文件的解析。本文会介绍CsvHelper、TextFieldParser、正则表达式三种解析CSV文件的方法,需要的可以参考一下
    2022-06-06
  • C#简单聊天室雏形

    C#简单聊天室雏形

    这篇文章主要为大家详细介绍了C#简单聊天室雏形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Unity3D UGUI实现翻书特效

    Unity3D UGUI实现翻书特效

    这篇文章主要为大家详细介绍了Unity3D UGUI实现翻书特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • C#中结构体和字节数组转换实现

    C#中结构体和字节数组转换实现

    这篇文章主要介绍了C#中结构体和字节数组转换实现,本文直接给出了字节数组与结构体的转换代码,代码中包含详细注释,需要的朋友可以参考下
    2015-06-06
  • C#批量插入数据到Sqlserver中的三种方式

    C#批量插入数据到Sqlserver中的三种方式

    这篇文章主要为大家详细介绍了C#批量插入数据到Sqlserver中的三种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • C#之关于Base64简单加密与解密方式

    C#之关于Base64简单加密与解密方式

    这篇文章主要介绍了C#之关于Base64简单加密与解密方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • C#?wpf实现截屏框热键截屏的示例代码

    C#?wpf实现截屏框热键截屏的示例代码

    这篇文章主要为大家详细介绍了C#?wpf实现截屏框热键截屏的相关知识,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以学习一下
    2023-09-09
  • 使用GPS经纬度定位附近地点(某一点范围内查询)

    使用GPS经纬度定位附近地点(某一点范围内查询)

    目前的工作是需要手机查找附近N米以内的商户,致想法是已知一个中心点,一个半径,求圆包含于圆抛物线里所有的点,经纬度是一个点,半径是一个距离,不能直接加减,下面提供C#的解决方法
    2013-12-12
  • C#(asp.net)多线程用法示例(可用于同时处理多个任务)

    C#(asp.net)多线程用法示例(可用于同时处理多个任务)

    这篇文章主要介绍了C#(asp.net)多线程Thread用法,可用于同时处理多个任务,以简单数学运算为例讲述了Thread类实现多线程的相关技巧,需要的朋友可以参考下
    2016-06-06
  • C#实现组合排列的方法

    C#实现组合排列的方法

    这篇文章主要介绍了C#实现组合排列的方法的相关资料,并附实例代码,需要的朋友可以参考下
    2016-10-10

最新评论

?


http://www.vxiaotou.com