精华内容
下载资源
问答
  • 为了让大家更清楚地知道如何去实现自己的截图工具,首先我来描述下截图的一个过程——我们使用QQ截图工具和Windows 自带的截图工具都可以发现,当我们点击QQ窗体中的截图按钮时,此时我们将看到一个全屏图片,然后...

    本文实例为大家分享了C#实现QQ截图工具的具体代码,供大家参考,具体内容如下

    下面就具体介绍下实现截图工具的实现思路。

    为了让大家更清楚地知道如何去实现自己的截图工具,首先我来描述下截图的一个过程——我们使用QQ的截图工具和Windows 自带的截图工具都可以发现,当我们点击QQ窗体中的截图按钮时,此时我们将看到一个全屏图片,然后我们可以在其上截图,当鼠标左键按下时,即代表开始截图,并我们可以移动鼠标来改变截图的大小,鼠标弹起时即代表结束截图,此时我们可以双击矩形区域完全截图,并且可以通过粘贴操作把截取的图片粘贴到聊天窗口的发送区,鼠标右键点击则是退出截图。这样我们截图的过程描述就是这样的,从这个描述中我们就可以抽象出实现我们截图工具的思路来:

    从 “此时我们将看到一个全屏图片”这句话描述我们应该抽象为——对于QQ截图工具的实现来说,我们看到的这个全屏图片其实并不是一张“图片”(这里最好不要钻空子),而是一个窗体,这个窗体我们命名为 “截图窗体”,只是把窗体的背景图片设置为全屏图片。说到这里,一些没有研究过QQ截图工具的人开始有疑问了——我们看到的是窗体?那为什么边框的,即没有最大化按钮,最下化按钮的呢?(对于这点的解释就是,程序中可以设置Form的BorderStyle属性为none的方式来隐藏掉边框)。

    既然要设置窗体的背景图片为全屏图片,我们知道设置背景图片只需要设置窗体的BackgroundImage属性就好了,但是全屏图片怎么获取呢?既然是全屏图片,自然我就应该使窗体最大化话了,不然我们看到只是一个没有边框的“小图片”了,而不是一个全屏的图片。下面是具体实现这个分析的代码:

    // 通过Graphics的CopyFromScreen方法把全屏图片的拷贝到我们定义好的一个和屏幕大小相同的空白图片中,

    // 拷贝完成之后,CatchBmp就是全屏图片的拷贝了,然后指定为截图窗体背景图片就好了。

    // 新建一个和屏幕大小相同的图片

    Bitmap CatchBmp = new Bitmap(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height);

    // 创建一个画板,让我们可以在画板上画图

    // 这个画板也就是和屏幕大小一样大的图片

    // 我们可以通过Graphics这个类在这个空白图片上画图

    Graphics g = Graphics.FromImage(CatchBmp);

    // 把屏幕图片拷贝到我们创建的空白图片 CatchBmp中

    g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(Screen.AllScreens[0].Bounds.Width, Screen.AllScreens[0].Bounds.Height));

    // 创建截图窗体

    cutter = new Cutter();

    // 指示窗体的背景图片为屏幕图片

    cutter.BackgroundImage = CatchBmp;

    3. 从 “然后我们可以在其上截图”这句话中我们抽象为——其实我们截图操作,从程序角度来说就是我们在这个最大化的窗体中画图,可能这个对一些不了解GDI+画图的朋友有些难理解,这里做个比喻——我们会拿笔在纸上画图,我们可以用比画三角形,矩形已经各种图形,此时纸就是我们一个画板,笔是用来画图图形的,同时笔也是有颜色和粗细的,我们可以用红色水笔画,画出来的图就是红色的了,也可以用黑色水笔画,自然画出来的就是黑色的了,同样,在GDI+也就是Graphics Device Interface Plus也就是图形设备接口,在.NET 中也提供了一些这样的类来让我们实现对图像的访问,也就是我们可以使用.NET中提供的类来进行 “画画”,要画画当然必须要有画板吧(我们开始比喻中纸就是画板),在.NET 类中Graphics类就是对画板的抽象,画板可以由三种方式创建:(1)从图片或继承自图像对象中创建;(2)从窗体或控件的Paint事件中创建;(3)利用窗体或控件的CreateGraphics方法创建。有了画板之后,当然就需要笔来画画了,在.NET 中Pen类就是起到笔的作用,在构造函数中可以指定笔的颜色和粗细,有了笔之后就是开始画图了,在.NET中也同样提供了一些方法来完成画图,如DrawRectangle方法——画矩形

    4. 从 “当鼠标左键按下时,即代表开始截图,并我们可以移动鼠标来改变截图的大小,鼠标弹起时即代表结束截图,此时我们可以双击矩形区域完全截图,并且可以通过粘贴操作把截取的图片粘贴到聊天窗口的发送区,鼠标右键点击则是退出截图”这些描述中可以抽象为——鼠标的移动,按下,弹起等操作,在程序角度来说,也就是实现截图窗体的MouseMove事件(对应于鼠标移动),MouseDown事件(对应于鼠标左键按下),MouseClick事件(对应于鼠标右键结束截图)、MouseUp(对应于鼠标弹起结束截图)和MouseDoubleClick(鼠标双击矩形区域完全截图,并可以通过粘贴操作把截取的图片粘贴到聊天窗口的发送区,既然可以进行粘贴操作来获得截取图片,所以必须在该事件中对剪切板设置截图图片),3和4的分析过程也是截图功能的核心实现,对应于下面的代码(代码中有详细解释,并且大家理解的时候可以结合3和4的分析):

    ///

    /// 鼠标右键点击结束截图

    ///

    ///

    ///

    private void Cutter_MouseClick(object sender, MouseEventArgs e)

    {

    if (e.Button == MouseButtons.Right)

    {

    this.DialogResult = DialogResult.OK;

    this.Close();

    }

    }

    ///

    /// 鼠标按下事件处理程序

    ///

    ///

    ///

    private void Cutter_MouseDown(object sender, MouseEventArgs e)

    {

    // 鼠标左键按下是开始画图,也就是截图

    if (e.Button == MouseButtons.Left)

    {

    // 如果捕捉没有开始

    if (!CatchStart)

    {

    CatchStart = true;

    // 保存此时鼠标按下坐标

    DownPoint = new Point(e.X, e.Y);

    }

    }

    }

    ///

    /// 鼠标移动事件处理程序,即用户改变截图大小的处理

    /// 这个方法是截图功能的核心方法,也就是绘制截图

    ///

    ///

    ///

    private void Cutter_MouseMove(object sender, MouseEventArgs e)

    {

    // 确保截图开始

    if (CatchStart)

    {

    // 新建一个图片对象,让它与屏幕图片相同

    Bitmap copyBmp = (Bitmap)originBmp.Clone();

    // 获取鼠标按下的坐标

    Point newPoint = new Point(DownPoint.X, DownPoint.Y);

    // 新建画板和画笔

    Graphics g = Graphics.FromImage(copyBmp);

    Pen p = new Pen(Color.Red, 1);

    // 获取矩形的长宽

    int width = Math.Abs(e.X - DownPoint.X);

    int height = Math.Abs(e.Y-DownPoint.Y);

    if (e.X < DownPoint.X)

    {

    newPoint.X = e.X;

    }

    if (e.Y < DownPoint.Y)

    {

    newPoint.Y = e.Y;

    }

    CatchRectangle = new Rectangle(newPoint, new Size(width,height));

    // 将矩形画在画板上

    g.DrawRectangle(p, CatchRectangle);

    // 释放目前的画板

    g.Dispose();

    p.Dispose();

    // 从当前窗体创建新的画板

    Graphics g1 = this.CreateGraphics();

    // 将刚才所画的图片画到截图窗体上

    // 为什么不直接在当前窗体画图呢?

    // 如果自己解决将矩形画在窗体上,会造成图片抖动并且有无数个矩形

    // 这样实现也属于二次缓冲技术

    g1.DrawImage(copyBmp, new Point(0, 0));

    g1.Dispose();

    // 释放拷贝图片,防止内存被大量消耗

    copyBmp.Dispose();

    }

    }

    ///

    /// 鼠标左键弹起事件

    ///

    ///

    ///

    private void Cutter_MouseUp(object sender, MouseEventArgs e)

    {

    if (e.Button == MouseButtons.Left)

    {

    // 如果截图已经开始,鼠标左键弹起设置截图完成

    if (CatchStart)

    {

    CatchStart = false;

    CatchFinished = true;

    }

    }

    }

    ///

    /// 鼠标双击事件,如果鼠标位于矩形内,则将矩形内的图片保存到剪切板中

    ///

    ///

    ///

    private void Cutter_MouseDoubleClick(object sender, MouseEventArgs e)

    {

    if (e.Button == MouseButtons.Left && CatchFinished)

    {

    // 新建一个与矩形一样大小的空白图片

    Bitmap CatchedBmp = new Bitmap(CatchRectangle.Width, CatchRectangle.Height);

    Graphics g = Graphics.FromImage(CatchedBmp);

    // 把originBmp中指定部分按照指定大小画到空白图片上

    // CatchRectangle指定originBmp中指定部分

    // 第二个参数指定绘制到空白图片的位置和大小

    // 画完后CatchedBmp不再是空白图片了,而是具有与截取的图片一样的内容

    g.DrawImage(originBmp, new Rectangle(0, 0, CatchRectangle.Width, CatchRectangle.Height), CatchRectangle, GraphicsUnit.Pixel);

    // 将图片保存到剪切板中

    Clipboard.SetImage(CatchedBmp);

    g.Dispose();

    CatchFinished = false;

    this.BackgroundImage = originBmp;

    CatchedBmp.Dispose();

    this.DialogResult = DialogResult.OK;

    this.Close();

    }

    }

    5、到第4点为止,截图的功能已经分析完了,之后就是当我们使用QQ截图的时候,我们除了可以点击聊天窗口中的截图按钮来进行截图外,还可以通过按下Alt+Ctrl+A来进行截图,要实现这个功能的思路也很简单——即当聊天窗体加载的时候对热键(程序中我定义的热键是“Alt+Ctrl+C”)进行注册(此时调用了Win32中RegisterHotKey方法来完成热键的注册),当聊天窗体关闭时进行对热键的卸载,防止对热键进行多次注册,此时调用Win32中的UnregisterHotKey方法来完成,具体的实现代码为:

    ///

    /// 窗体加载事件处理

    /// 在窗体加载时注册热键

    ///

    ///

    ///

    private void 聊天窗体_Load(object sender, EventArgs e)

    {

    uint ctrlHotKey = (uint)(KeyModifiers.Alt|KeyModifiers.Ctrl);

    // 注册热键为Alt+Ctrl+C, "100"为唯一标识热键

    HotKey.RegisterHotKey(Handle, 100, ctrlHotKey, Keys.C);

    }

    ///

    /// 窗体关闭时处理程序

    /// 窗体关闭时取消热键注册

    ///

    ///

    ///

    private void 聊天窗体_FormClosing(object sender, FormClosingEventArgs e)

    {

    // 卸载热键

    HotKey.UnregisterHotKey(Handle, 100);

    }

    #endregion

    // 热键按下执行的方法

    private void GlobalKeyProcess()

    {

    this.WindowState = FormWindowState.Minimized;

    // 窗口最小化也需要一定时间

    Thread.Sleep(200);

    btnCutter.PerformClick();

    }

    ///

    /// 重写WndProc()方法,通过监视系统消息,来调用过程

    /// 监视Windows消息

    ///

    ///

    protected override void WndProc(ref Message m)

    {

    //如果m.Msg的值为0x0312那么表示用户按下了热键

    const int WM_HOTKEY = 0x0312;

    switch (m.Msg)

    {

    case WM_HOTKEY:

    if (m.WParam.ToString() == "100")

    {

    GlobalKeyProcess();

    }

    break;

    }

    // 将系统消息传递自父类的WndProc

    base.WndProc(ref m);

    }

    实现效果上面已经介绍了实现QQ截图的一个思路的,朋友们是不是迫不及待想看看该程序的一个效果了?下面就通过一个动画来让大家更形象地看到程序的运行效果的:

    d2d381586f884776aa47f10dd6fe76b1.png

    QQ截图工具下载:下载地址

    总结

    到这里QQ截图的介绍部分就到这里了,本工具的实现自认为讲解的非常通俗易懂的,希望大家可以这样觉得并且可以更清晰地明白QQ截图的实现思路。

    展开全文
  • Qt仿QQ截图工具

    2021-01-28 22:52:59
    Qt仿QQ截图工具 文章目录Qt仿QQ截图工具功能效果图源代码结尾 功能 支持画刷大小调节,颜色调节 支持箭头调节 支持方形调节 支持椭圆调节 支持马赛克调节 支持移动 支持保存 支持撤回 支持工具栏位置自适应 效果图...

    Qt仿QQ截图工具

    功能

    1. 支持画刷大小调节,颜色调节
    2. 支持箭头调节
    3. 支持方形调节
    4. 支持椭圆调节
    5. 支持马赛克调节
    6. 支持移动
    7. 支持保存
    8. 支持撤回
    9. 支持工具栏位置自适应

    效果图

    在这里插入图片描述
    在这里插入图片描述

    源代码

    Qt交流大会 853086607 (收费群,用于后期群费用)
    在这里插入图片描述

    结尾

    不定期上传新作品,解答群中作品相关问题。相关外,能解答则解答。欢迎大家一起探索Qt世界!相关工程,可以联系博主雨田哥:3246214072

    展开全文
  • 基于java的QQ截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。 该软件的功能: (1)随机获取屏幕指定区域; (2)编辑(添加文字)截图; (3)存储截图; ...

    基于java的QQ截屏工具的设计和实现能够实现对屏幕的随机截取,复制,保存以及添加文字等操作,便于用户对数据的处理。

    该软件的功能:
    (1)随机获取屏幕指定区域;
    (2)编辑(添加文字)截图;
    (3)存储截图;

    请添加图片描述
    请添加图片描述
    请添加图片描述

    源码及资料:
    http://www.byamd.xyz/sss.html
    
    展开全文
  • Java实现qq截图工具

    多人点赞 2021-01-07 21:32:48
    本软件采用Java语言进行模拟qq截图功能,获取屏幕方式灵活,可以获取指定的屏幕,并且可以对获取到的截图进行存储,编辑(添加文字)等操作,对这些操作设置了自定义热键。该软件主要有捕获光标功能,可以指定截取屏幕的...

    导读:当今时代是飞速发展的信息时代,人们在对信息的处理中对图像的处理量与日俱增,这一点在文档人员上显得非常突出。

    本软件采用Java语言进行模拟qq截图功能,获取屏幕方式灵活,可以获取指定的屏幕,并且可以对获取到的截图进行存储,编辑(添加文字)等操作,对这些操作设置了自定义热键。该软件主要有捕获光标功能,可以指定截取屏幕的区域。软件具有捕捉光标,可以随着鼠标的移动获取屏幕区域,为之后的存储和编辑提供前置条件。图片可以自命名,获取到的截图可以依据当前

    展开全文
  • 1、新版的QQ已经没有CameraDll.dll...2、打开QQ的安装目录,如C:\Program Files\Tencent\QQ\Bin\,找到QQ的安装目录下的CameraDll.dll文件,这个文件就是与QQ截图有关的文件。 新建D:\QQjietu,把其覆盖到D:\QQjietu.
  • 设计一款基于Java的QQ屏幕截图软件,能实现不联网也能对屏幕截图截图是由电脑截取显示在屏幕上或其他显示设备上的可视图像,通常截图可以由操作系统或专用截图软件截取,截取的图像会有不同种的文件格式,如BMP、...
  • 【实例简介】1、可自识别区域,【右键单击】选中区域2、工具栏可实现【画线】,【矩形】,【不规则画图】,【保存】,【退出】,保存到剪切板功能3、【左键拖动】绘制自定义截图4、自定义截图区域外,【左键拖动】,...
  • 这篇文章主要介绍了在网页中实现读取剪贴板粘贴截图功能,即可以把剪贴板的截图Ctrl+V粘贴到网页的一个输入框中,例如QQ截图、旺旺截图或者其它截图软件。具体代码如下。利用 clipboardData 在网页中实现截屏粘贴的...
  • 我仿照常用的QQ截图工具用Qt5做了一个功能上的实能。功能目前实现了常用的一些,有几个功能还未实现,以后有机会实现吧(应该没机会了)。 已经实现的功能: 实现单屏幕上的矩形选择截图。 可拖动、缩放、重绘...
  • 史上最完整的QQ截图工具,1比1,高仿供学习,MulanPSL-2.0协议,Qt实现,可随意移植国产系统UOS/麒麟。 仿最新版QQ截图工具 文章目录功能效果源码 功能 支持窗口自动查找 支持桌面大小信息、鼠标坐标信息、RGB值...
  • 下载: https://www.faststone.org/FSCaptureDownload.htm USER NAME:TEAM_BRAiGHTLiNG_2007 CODE:XPNMF-ISDYF-LCSED-BPATU FastStone Capture 感觉还是没qq截图工具好用, qq截图工具独立版是不需要安装qq的。...
  • Snipaste是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上!下载并打开 Snipaste,按下F1来开始截图,再按F3,截图就在桌面置顶显示了。就这么简单!你还可以将剪贴板里的文字或者颜色信息转化为图片窗口...
  • 一说到截图工具我们脑袋里最先跳出来应该是 QQ 和微信等社交软件自带的截图工具,这里小编为大家推荐的是经常被忽昭略的mac自带截屏工具。也许你想不到苹果自带截图工具功能是十分的强大的。 mac自带截屏工具使用...
  • 截屏、录屏】工具分享-最简单的工具-QQ 1.简介 相信大家在截屏时经常需要标记强调部分内容,如图所示。 又或者再加上一些数字和文字,给一些地方打上马赛克,甚至不再是图片操作而是录制视频。如下图: 2.工具...
  • 1. 前言本文主要介绍ubuntu3种常用的截图工具及使用方法,包括如何设置快捷方式。以Ubuntu18.04为例。2. Shuttershutter截图软件支持全屏截图,指定区域截图、图片编辑等等功能。如果你的系统是Ubuntu16.04,推荐...
  • 虽然QQ和微信也有截图功能,但每次都要登录,比较麻烦。那么win10自带截图工具怎么使用?接下来小编给大家讲解一下具体使用方法。具体方法如下:1、打开电脑的“运行”,可以直接“Win+R”或右键点击电脑左下角的win...
  • 虽然系统本身有带截图工具,但是却苦于没有办法在截下来的图片上作画圈、写文字说明等动作。应该有不少朋友也是从windows系统下转到linux下做开发的,不知道大家对QQ截图这个软件是否喜欢,反正本熊是很喜欢啦,特别...
  • QQ,然后按ctrl+alt+o 你会回来感谢我的
  • QQ的庞大安装量带动了腾讯系的所有产品的安装量,QQ浏览器作为腾讯旗下开发的浏览工具,也拥有不俗的装机量。QQ浏览器不仅是沾了QQ的光,其自身实力也有不俗的,QQ浏览器的应用中心与其他浏览器的扩展中心一般支持...
  • QQ令牌工具 活令牌查询动态密码(大哥牌)机器人提取的格式如下:1564451331----Qq90741838----02600B147129C88B93EF2EAE67EA305466B30E1F9AC6227D8B4D45E0558C5306----您母亲的姓名是?----ireyFRnB----您父亲的姓名...
  • 温言QQ工具箱 这是一款QQ用的辅助软件,易语言制作而成! Win10界面皮肤 ,我自认为挺好看; 软件内百分之九十八的功能 免费试用 ; 软件作者 老鼠 每晚8点到9点在线; 并且软件将会 持续更新 ; 接受所有人的反馈; ...
  • 分享一个好用的QQ微信防撤回工具补丁,来源是今天一朋友分享给我的,他今天突然给我发信息说给我分享一个很好用的工具,我一看,是个防撤回工具,我寻思市面上那么多防撤回工具,他怎么今天突然给我分享这个,我打开...
  • QQ西游修罗职业一键端,闪亮登场绝对真实的修罗职业修罗技能,带全套工具以及口令,让你在游戏里无所不能!本端特色:此端相比以往别的端BUG都少些。什么角色同屏,商城物品少、新元神符没法学习各种任务、宠物BUG等...
  • 打开QQ截图,选中区域后,点击长截图 (相信大部分电脑还是装着QQ的吧… 滚动鼠标滑轮即可随心所欲得截长图 然后…就可以和下图一样截很长的一幅图
  • 在之前写的那篇通告中,阿虚提到了自己之前QQ被封号的一事,引起不少粉丝的共情 毕竟可能不少人都经历过2020年7月份的QQ大规模封号事件(如果QQ不幸被封号,你能取出的只有余额,其他一概取不到) 很多粉丝告诉阿虚...
  • QQ自带截图工具甚至是这样的:手残党手机拍摄9012年都过去了,你用QQ、微信自带的截图还可以理解,用手机拍摄拍成这样有点。。。。。。总之,还不是没有合适的截图工具吗?如果有这样操作简单、人性化、占电脑内存...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 402,052
精华内容 160,820
关键字:

qq截图工具