C#/WPF 自制截图工具

news/2024/7/9 19:35:09 标签: c#, wpf, 开发语言

        在日常使用电脑办公时,我们经常遇到需要截图然后保存图片,我们往往需要借助安装截图工具才能实现,现在我们通过C#自制截图工具,也能够轻松进行截图。

我们可以通过C#调用WindousAPI来实现截图,实例代码如下:


        /// <summary>
        /// 调用API函数获取整个屏幕的图像
        /// </summary>
        /// <returns></returns>
        [DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
        private static extern IntPtr GetDesktopWindow();

        [DllImport("user32.dll", EntryPoint = "GetWindowDC")]
        private static extern IntPtr GetWindowDC(IntPtr hwnd);

        [DllImport("gdi32.dll", EntryPoint = "BitBlt")]
        private static extern int BitBlt(
            IntPtr hDestDC,
            int x,
            int y,
            int nWidth,
            int nHeight,
            IntPtr hSrcDC,
            int xSrc,
            int ySrc,
            int dwRop
        );

        /// <summary>
        /// 截取整个屏幕的图像
        /// </summary>
        /// <returns></returns>
        public static Bitmap CopyFromScreen()
        {
            int width = (int)SystemParameters.PrimaryScreenWidth;
            int height = (int)SystemParameters.PrimaryScreenHeight;
            Bitmap newBitmap = new Bitmap(width, height);
            Graphics g = Graphics.FromImage(newBitmap);

            IntPtr DeskHwnd = GetWindowDC(GetDesktopWindow());
            IntPtr Ghwnd = g.GetHdc();

            BitBlt(Ghwnd, 0, 0, width, height, DeskHwnd, 0, 0, 13369376);
            g.ReleaseHdc(Ghwnd);

            CopyHelper.newBitmap = newBitmap;
            return newBitmap;
        }

实例链接:https://download.csdn.net/download/lvxingzhe3/89505005


http://www.niftyadmin.cn/n/5539044.html

相关文章

王道考研数据机构:中缀表达式转为后缀表达式

实现方法&#xff1a; 初始化一个栈&#xff0c;用于保存暂时还不能确定运算顺序的运算符。从左到右处理各个元素&#xff0c;直到末尾。可能遇到三种情况: 遇到操作数。直接加入后缀表达式遇到界限符。遇到“(”直接入栈;遇到“)”则依次弹出栈内运算符并加入后缀表达式&…

DP学习——模板模式

学而时习之&#xff0c;温故而知新。 字面理解 模板&#xff1f;啥叫模板&#xff1f;模板就是固定死了&#xff0c;就是一套流程/步骤上层写死了。固定死了的流程或者步骤就是模板。然后我们要重写或者改写的是写死的这套流程中的节点。俗称“套模板”。 使用场合&#xff…

ArcGIS Pro SDK (七)编辑 15 版本控制选项

ArcGIS Pro SDK &#xff08;七&#xff09;编辑 15 版本控制选项 文章目录 ArcGIS Pro SDK &#xff08;七&#xff09;编辑 15 版本控制选项获取和设置版本控制选项 环境&#xff1a;Visual Studio 2022 .NET6 ArcGIS Pro SDK 3.0 获取和设置版本控制选项 var vOptions A…

Symfony配置管理深度解析:构建可维护项目的秘诀

Symfony是一个高度灵活且功能丰富的PHP框架&#xff0c;它提供了一套强大的配置管理系统&#xff0c;使得开发者能够轻松定制和优化应用程序的行为。本文将深入探讨Symfony中的配置管理机制&#xff0c;包括配置的结构、来源、加载过程以及最佳实践。 一、配置管理的重要性 在…

Word中输入文字时,后面的文字消失

当在Word中输入文字时&#xff0c;如果发现后面的文字消失&#xff0c;通常是由以下3个原因造成的&#xff1a; 检查Insert键状态&#xff1a;首先确认是否误按了Insert键。如果是&#xff0c;请再次按下Insert键以切换回插入模式。在插入模式下&#xff0c;新输入的文字会插入…

抖音矩阵智能剪辑系统源码,saas多平台多账号一站式管理,系统搭建流程

‘1. 将MySQL升级至5.6版本&#xff0c;PHP更新至7.2版本&#xff0c;并使用Apache作为服务器。数据库应命名为“juzhen”。 2. 在Nginx环境下&#xff0c;实现伪静态的切换。 3. 将安装包解压至项目的根目录&#xff0c;并定位至application/database.php文件以更换数据库密…

把鼠标光标移到一段文字的首部,尾部,以及翻行查找文字等

如果当前的键盘无单独的End、Home、PgDn、PdUp。 1、如果光标在一段文字的中间&#xff1a; 需要快速移到文字尾部&#xff0c;按住&#xff1a;shiftEnd(如果End在数字1键扣上,shift1&#xff09; 需要快速移到文字首部&#xff1a;按住&#xff1a;shiftHome(如果End在数字…

Kafka系列之Kafka知识超强总结

一、Kafka简介 Kafka是什么 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff08;消息引擎系统&#xff09;&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c; 搜索和其他用户的行动&#xff09;是在现代网络上的许多社…