C#屏幕拷贝源码

C#屏幕截取、保存 /如果上述两种方法还是无法得到想要的效果,可以采用user32.dll自带的方法。 阅读详情
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Threading;


namespace CopyScreen
{
    public partial class MainForm : Form
    {
        System.Windows.Forms.Timer T = new System.Windows.Forms.Timer();


        public MainForm()
        {
            InitializeComponent();
            T.Interval = 1000;
            T.Tick += new EventHandler(T_Tick);
            T.Enabled = false;
        }


        private void T_Tick(object sender, EventArgs e)
        {
            button2_Click(sender, e);
            T.Enabled = false;
        }


        private void button1_Click(object sender, EventArgs e)
        {
            Screen sc = Screen.PrimaryScreen;//取得主屏
            Rectangle rct = sc.Bounds;//得到主屏的范围
            Image img = new Bitmap(rct.Width, rct.Height);
            Graphics gp = Graphics.FromImage(img);
            gp.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(rct.Width, rct.Height));   //关键是这个函数
            img.Save("Test.bmp", System.Drawing.Imaging.ImageFormat.Png);
            img.Dispose();
            gp.Dispose();
            GC.Collect();
        }


        private void button2_Click(object sender, EventArgs e)
        {
            string fileName = System.Environment.CurrentDirectory + "\\Test.bmp";


            if (File.Exists(fileName))
            {    //建立新的系统进程  
                System.Diagnostics.Process process = new System.Diagnostics.Process();
                //设置文件名,此处为图片的真实路径+文件名  
                process.StartInfo.FileName = fileName;
                //此为关键部分。设置进程运行参数,此时为最大化窗口显示图片。  
                process.StartInfo.Arguments = "rundll32.exe C://WINDOWS//system32//shimgvw.dll,ImageView_Fullscreen";
                //此项为是否使用Shell执行程序,因系统默认为true,此项也可不设,但若设置必须为true  
                process.StartInfo.UseShellExecute = true;
                //此处可以更改进程所打开窗体的显示样式,可以不设  
                process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                process.Start();
                process.Close();


                process.Dispose();
                GC.Collect();
            }
            else
            {
                if (MessageBox.Show("The picture does not exist, whether to copy the screen?", "Information:", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                {
                    Thread.Sleep(500);
                    button1_Click(sender, e);


                    T.Enabled = true;
                }
            }


         
        }




    }
}
C#获取屏幕缩放比例 在Windows桌面客户端的开发中,有时会想要精确计算窗口的面积或位置。然而在默认情况下,无论WinForms的Screen.Bounds.Width属性还是WPF中SystemParameters.PrimaryScreenWidth属性,以下图举例,将会返回除以150%的数值1280。这样修改后,Screen.PrimaryScreen.Bounds将获得实际的物理分辨率尺寸,同时你还会发现WinForms程序不糊了。该方法可以获取设备的硬件信息,可以通过第二个参数nIndex来指定要查询的具体信息。 阅读详情

相关推荐

C#屏幕截取[包括桌面与窗口]

      截取桌面图像,比较简单,只需要简单的调用Graphics的CopyFromScreen方法即可以实现;     关于将图像绘制到窗口上很容易实现,但是却很少看到有文章介绍从窗口上截取图像的。下面主要介绍一下关于窗口图像截取的方法。    要截取窗口的图像,需要用到系统提供的BitBlt函数,这个函数的作用就是从源设备的上下文中拷贝一张Bitmap图像至目标设备。具体参数

大道至简,持之以恒 6427

C#截图操作屏幕不完整/多屏幕共同截图解决

C#截图操作屏幕不完整/多屏幕共同截图解决 C#由于缩放问题导致截图不能正常工作 windows界面缩放导致bug C#多屏幕截图 Bitmap、GetDeviceCaps、Graphic

weixin_45713062的博客 4361

【C#】【源码】直接可用的远程桌面应用

本文介绍了一种轻量级远程桌面工具的实现方案,适用于封闭环境中无法使用TeamViewer等商业软件的情况。方案采用C#开发,包含客户端和服务端两个程序:客户端负责截取桌面图像并通过TCP传输,服务端接收并实时显示画面。文章详细说明了UI设计、核心代码逻辑和运行流程,并分析了方案的优缺点(如不依赖第三方但性能受限)。最后提出了压缩传输、键鼠控制等优化方向,强调该方案能完全掌握数据传输过程,适合内网环境使用。附源码下载链接。

每日出拳老爷子的博客 1632

C# 屏幕截图

C# 屏幕截图

weixin_43931979的博客 2794

告别OBS!用C#和.NET 6写一个自己的轻量录屏工具(附源码)

本文详细介绍了如何使用C#和.NET 6开发一个轻量级屏幕录制工具,替代资源占用高的OBS等软件。通过GDI+捕获屏幕、FFmpeg编码和自动分段保存MP4文件,实现高性能录屏功能,内存占用仅为OBS的1/5。文章包含完整源码和性能优化技巧,帮助开发者快速构建专属录屏解决方案。

weixin_30790841的博客 281

截图小工具,用c#语言开发

Windows 7 系统,开发软件为Microsoft Visual Studio Ultimate 2012屏幕截屏,保存到图片或者保存到剪切板。截屏范围可以随意移动或者改变大小,自由度很高。 先看一下演示操作。用c#开放的截图小工具,有需要的联系我,需要源码的联系我共2个窗体,1个是主窗体,主要功能进行热键设置,抓取屏幕到图片传给另一个窗体,另一个窗体对传过来的图片继续截取等操作。 窗体主要属性设置如下: 此窗口内主要包括2个label控件,1个ComboBox和1个PictureBox,摆放位置如上图

zhaoyang314的博客 2650

屏幕截图的实现和源代码

最近打算写一些入门相关的小应用程序开发实例,个人感觉学习程序开发,其关键的一步就是阅读源代码(RTFSC,呵呵),然后尝试自己动手编写。这里所谓的自己动手编写并不是让你照着源代码一句话一句的敲,也不是复制粘贴,而是阅读了源代码以后,学习其中的编程思想,然后加以应用,写出自己的程序,你可以在你阅读的源代码上增加功能或优化代码,或者就是在完全不看源代码的情况下,实现相同的功能。如果想学好程序开发,一定

sweetwxh的专栏 9626

【手势识别】【Unity】基于TouchScript插件和$1 Unistroke Recognizer(一笔识别)算法的屏幕手势识别研究

【手势识别】基于TouchScript插件和$1 Unistroke Recognizer(一笔识别)算法的屏幕手势识别研究   这两天项目上有一个需求是在屏幕背景上一笔画出一个五角星或者其他图案即弹出一个提示窗口,研究了一下,发现$1 Unistroke Recognizer(一笔识别)算法和TouchScript插件可以完美适配该功能。下面介绍一下如何实现(github项目源码在文章末端): ...

南衣的博客 3107

C# 基于 Udp 的屏幕实时传输:低延迟抓屏、分片与重组实战

UDP 协议凭借无连接、低开销的特性,在实时屏幕传输中比 TCP 更具优势,尤其适合容忍丢包但要求最新帧尽快到达的场景。其核心原理是将屏幕画面抓取、压缩后分片发送,接收端重组并渲染,从而绕过 TCP 重传导致的延迟堆积。在工业上位机、远程监控、多屏协作等 C# 应用场景中,基于 Udp 的屏幕传输能显著降低延迟,提升实时性。本文围绕 C# 实现,详解抓屏、JPEG 压缩、Udp 分片与重组、参数调优及避坑技巧,助你构建高效的屏幕实时传输方案。

weixin_29611239的博客 277

C# 实现截屏(附完整源码)

C# 实现截屏(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 253

C#实现金山词霸风格屏幕取词功能(含完整源码)

屏幕取词技术的核心在于实现对屏幕上任意应用界面中文本的实时捕获与语义解析,其本质是跨进程的内容提取。该技术依赖操作系统底层支持,通过GDI接口获取目标区域图像数据,结合鼠标行为监听确定选词范围,并利用OCR引擎识别位图中的文字。在Windows平台下,C#可通过调用GetDCBitBlt等API完成高效截图,克服剪贴板或内存共享带来的延迟与权限限制。同时,需处理DPI缩放、多显示器坐标映射及权限隔离等问题,确保在不同环境下稳定取词。本章为后续截图、识别与集成奠定理论基础。y++)x++)

weixin_42612405的博客 1240

C#推箱子游戏源码解析:从数据结构到撤销功能实现

在C#游戏开发中,二维数组和集合是处理地图与实体的基础数据结构,而状态管理则确保游戏逻辑的正确性。通过分离静态地形与动态实体,结合键盘事件循环和撤销栈设计,可以构建出稳定且可扩展的小游戏。这种技术方案不仅适用于推箱子,还能推广到其他网格类游戏,如贪吃蛇或迷宫。本文以经典推箱子源码为例,详细讲解地图建模、移动判定、渲染循环及撤销功能的实现,帮助开发者掌握C#在游戏开发中的核心应用。

weixin_32349561的博客 275

C#开发电脑屏幕截取工具——源码+安装包完整项目实战

你以为截图只是“按个键”那么简单?错啦!这里面涉及:图形系统底层原理(GDI vs GDI+)多线程与资源管理UI 交互设计文件编码与压缩算法安装部署工程实践每一个环节都不能马虎。做好了,它是生产力利器;做砸了,轻则卡顿崩溃,重则泄露隐私、被杀毒软件误判为木马……所以啊,别小看任何一个“简单功能”。真正的高手,往往就在这些细节里见真章 😉本文还有配套的精品资源,点击获取。

weixin_33816734的博客 790

C#远程桌面屏幕源码:GDI抓屏、JPEG编码与Socket传输实战

远程桌面的本质不是一套画图工具,而是一条持续产出的图像数据管道:从屏幕捕获到图像编码,再到网络传输与端侧还原。屏幕捕获是源头,C#中常用GDI的CopyFromScreen实现低成本抓帧,适合办公、教学等普通场景;JPEG编码则在清晰度和带宽之间提供了最稳妥的平衡,通过质量参数和分辨率缩放即可灵活调节;而传输环节最大的挑战是TCP流导致的粘包,必须通过自定义帧头和循环读取来保证帧边界正确。这套技术栈广泛应用于远程运维、内网控制、上位机监控及教学演示等场景,理解其核心原理后,开发者可以根据实际带宽和画质需求,

weixin_33226548的博客 297

C# DirectShow音视频采集库源码拆解:PCM混音与屏幕录制实践

音视频采集是直播、录屏和多媒体应用开发的基础环节。DirectShow作为Windows平台经典的媒体架构,至今仍兼容大量采集设备。本文基于一套2.0时代的C#采集库,从底层原理出发,讲述如何通过DirectShow构建采集链路,获得原始PCM音频流与Bitmap视频帧。针对多路音频混音,重点解析了PCM样本的对齐策略与均值混音算法,避免削波和爆音。同时介绍了屏幕录制与摄像头采集的回调机制,以及64位环境下兼容32位组件的注意事项。文章还提供了工程实践中的编译踩坑记录和调用示例,帮助开发者快速将这套高内聚、

weixin_32183107的博客 295

基于C# WinForm的屏幕截图OCR工具开发:从截屏到Tesseract识别

屏幕上的文字无法直接选中复制时,OCR技术成为解决信息提取的关键手段,尤其在断网或软件弹窗场景下,本地桌面工具比在线服务更实用。屏幕截图是OCR输入的第一步,Windows平台常通过GDI+的CopyFromScreen捕获屏幕像素,而WinForm凭借轻量级窗口和简洁的GDI绘制,成为快速搭建截图识别工具的理想选择。在OCR引擎选型上,Tesseract以低接入成本和离线运行能力占优,尽管中文识别率一般,但配合灰度化、双三次插值等图像预处理可显著提升效果。理解坐标捕获、词级标注、剪贴板复用等细节,能帮助开

weixin_28363123的博客 254

C#从零编写屏幕颜色选择器:取色原理、RGB/HSL转换与踩坑记录

颜色是软件开发与视觉调试中频繁打交道的核心要素,精确获取和转换颜色值往往是排查问题的基础。屏幕取色技术的本质是将指定区域像素从屏幕拷贝到位图,再解析其RGB等颜色分量,配合HEX、HSL等多格式联动,能为界面调优、图像分析提供直观的数据依据。在C# WinForms桌面开发中,通过Graphics.CopyFromScreen与GetPixel即可实现轻量高效的实时取色,再结合全局热键注册与剪贴板交互,能够在任意应用场景中快速捕获并复制色值。这类工具的价值不只体现在设计师和前端人员身上,对于C#上位机开发、

weixin_33428613的博客 338

C#自定义颜色选择器开发实战:从HSV模型到屏幕取色

在图形界面与工业视觉调试中,颜色选取看似简单却常因系统控件交互欠佳而低效。理解HSV颜色模型是设计友好拾色器的关键,它比RGB更贴合人的感知逻辑,通过色相、饱和度与明度的三维映射,可实现直观的取色交互。自定义控件不仅支持Hex、RGB、HSV多格式实时转换,还能扩展屏幕取色、历史色板与跨程序联动,极大提升上位机与机器视觉场景中的参数配置效率。本文从HSV转换原理出发,逐步剖析色板绘制、坐标反算、数据类型转换及吸管功能实现,并以VisionMaster、海康相机SDK对接为例,展示如何将取色器深度嵌入业务流,

weixin_31220401的博客 320
上一篇: Windows虚拟键盘码
下一篇: Apache+tomcat+mod_jk+centos6.2负载均衡集群配置
常用技术
博客等级 码龄17年 91粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值