基于Qt的镜面翻转桌面小程序

目录

  • 引言
  • 捕获窗口
  • 定时触发
  • 全屏切换
  • 附录
  • 参考

个人博客:https://braised-lamb.github.io/

引言

windows桌面可以横向、纵向翻转显示桌面,但是不能对屏幕进行镜像翻转,当然基本上也不会有人有这种奇怪的需求。UltraMon可以实现这个功能,在扩展屏上镜像覆盖主屏幕,此外,这个软件本身也有很多很强大的功能。但是在主屏幕缩放比例超过100%时会无法正确显示,每次使用的时候都重新设置一下分辨率和缩放比例显得还是有些奇怪了。
于是自己写了一个基于Qt的镜像翻转桌面的小程序,基本的原理就是捕获主屏幕的画面,将图像镜像翻转后显示在窗口内。
如果想直接下载使用可以参考github页面的下载链接。

看看效果先:
扩展模式的双屏幕示例,右下为主屏幕,左上为扩展屏幕

捕获窗口

QPixmap QScreen::grabWindow(WId window = 0, int x = 0, int y = 0, int width = -1, int height = -1)可以实现指定句柄的窗口捕获,但是美中不足的是没有办法捕获到鼠标。
函数grW(HWND winId, int x, int y, int w, int h)参考附录1,实现了捕获桌面的同时也捕获鼠标,在使用时需要在Qt的设置中添加winextras组件。
winId是窗口句柄,获取主桌面的句柄可以借助以下语句实现:

	screen = QGuiApplication::primaryScreen();

获取窗口后,将图像进行镜面翻转后再嵌入窗口中,这个功能可能借助Qt自带的QImage QImage::mirrored(bool horizontal = false, bool vertical = true)函数实现,两个参数分别为水平方向和垂直方向的翻转与否。

定时触发

搞定了桌面和鼠标捕获,其实基本上就完成了主要工作,接下来只要设置一个定时器实时触发桌面捕获和显示的槽函数就可以了。

	connect(timer, SIGNAL(timeout()), this, SLOT(timeoutSlot()));timer->start(2);

定时器的触发间隔看需求了,虽然代码里设置了2毫秒,实际上也达不到这么快的速度,考虑到只在本地执行,也没有加上缓存区存储图像。

全屏切换

毕竟是用窗口覆盖了桌面,在显示的时候还是全屏遮盖掉其他应用和任务栏比较好,重构一下鼠标双击事件:

void screenRelayer::mouseDoubleClickEvent(QMouseEvent* mouseEvent)
{//showFlag为标志位if (showFlag) {this->showFullScreen();showFlag = false;}else {this->showNormal();showFlag = true;}
}

这样就可以在窗口内通过双击鼠标切换全屏和窗口了。

附录

  1. 窗口捕获函数实现1
QPixmap screenRelayer::grW(HWND winId, int x, int y, int w, int h)
{RECT r;GetClientRect(winId, &r);if (w < 0) w = r.right - r.left;if (h < 0) h = r.bottom - r.top;HDC display_dc = GetDC(winId);HDC bitmap_dc = CreateCompatibleDC(display_dc);HBITMAP bitmap = CreateCompatibleBitmap(display_dc, w, h);HGDIOBJ null_bitmap = SelectObject(bitmap_dc, bitmap);BitBlt(bitmap_dc, 0, 0, w, h, display_dc, x, y, SRCCOPY | CAPTUREBLT);CURSORINFO ci;ci.cbSize = sizeof(CURSORINFO);GetCursorInfo(&ci);if ((ci.ptScreenPos.x > x) && (ci.ptScreenPos.y > y) && (ci.ptScreenPos.x < (x + w)) && (ci.ptScreenPos.y < (y + h)))DrawIcon(bitmap_dc, ci.ptScreenPos.x - x, ci.ptScreenPos.y - y, ci.hCursor);// clean up all but bitmapReleaseDC(winId, display_dc);SelectObject(bitmap_dc, null_bitmap);DeleteDC(bitmap_dc);QPixmap pixmap = QtWin::fromHBITMAP(bitmap);DeleteObject(bitmap);return pixmap;
}
  1. 链接:
    https://github.com/Braised-Lamb/screenRelayer
    软件下载

参考

  • [1] windows 下使用Qt抓取桌面和鼠标

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15387.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低代码?首个基于ChatGPT的自然语言开发框架PromptAppGPT:全自动编译、运行、界面生成...

点击关注公众号&#xff1a;互联网架构师&#xff0c;后台回复 2T获取2TB学习资源&#xff01; 上一篇&#xff1a;Alibaba开源内网高并发编程手册.pdf 首个自研全开源自然语言低代码GPT应用快速开发框架——PromptAppGPT来了&#xff01; 最近&#xff0c;CCF理论计算机科学技…

九大思维框架:让你ChatGPT使用能力提升百倍

今天给大家分享9个常用的prompt的思维模型,便于大家快速的去掌握如何高效的使用ChatGPT 一、 APE模型 "行动(Action)、目的(Purpose)、期望(Expectation)"(APE)的模型是一个非常实用的决策和沟通工具,用于明确行动、目标和期望。 行动(Action):这是指…

首个基于ChatGPT的自然语言开发框架PromptAppGPT:全自动编译、运行、界面生成

来源&#xff1a;新智元 【导读】首个自研全开源自然语言低代码GPT应用快速开发框架——PromptAppGPT来了&#xff01; 最近&#xff0c;CCF理论计算机科学技术委员会委员张长旺&#xff0c;开发了一个基于低代码提示语的快速应用开发框架PromptAppGPT&#xff0c;可以实现基于…

声称或超越GPT-4!谷歌PaLM 2:全面向ChatGPT微软开炮

明敏 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 万众瞩目&#xff0c;谷歌的反击来了。 现在&#xff0c;谷歌搜索终于要加入AI对话功能了&#xff0c;排队通道已经开放。 当然这还只是第一步。 大的还在后面&#xff1a; 全新大语言模型PaLM 2正式亮相&#xff0c;谷歌声称它…

Prompt Engineering 写作准则与应用示例集

文章目录 0 优质Prompt 模版网站0.1 aimappro0.2 AI Short 1 写作规范与准则1.1 定界符的应用&#xff1a;分割指令与素材1.2 ChatGPT 保存对话框&#xff0c;保留历史信息1.3 通过Prompt让llm反思1.4 明确告诉LLM你需要正确的答案1.5 控制输出内容格式1.6 Prompt安全策略1.6.1…

用AI帮助小学一年级记住常用字

这几天娃就要一年级毕业放假了&#xff0c;感觉时间过得太快了。再开学就要上二年级&#xff0c;可汉字表上的区区三四百字&#xff0c;咋就那么的难读&#xff1f;难记&#xff1f;喊他们来认字&#xff0c;拉都拉不过来。哎&#xff0c;愁啊&#xff0c;替他们焦虑。突发奇想…

GPT中的temperature参数不是用在对话的而是用在调用OPEN API过程中的

前言 自从吴恩达OPENAI《ChatGPT 提示工程》放出后,各个层面反响热列。很多人看到了temperature这个参数,都以为在对话中或者说对话的末尾放上一个temperature=0-2的值就可以达到让GPT极大的发挥出自我创造能力、甚至写文章天马行空。 笔者这边觉得有义务指出这种用法是完全…

ChatGPT引AI大牛新老之争?谷歌钢铁侠速归救火;Prime Air首飞业绩捉急

本周AI业界有哪些新鲜事&#xff1f; AI开发者 ChatGPT大火&#xff0c;引发AI大牛新老之争&#xff1f; ChatGPT大火之后&#xff0c;AI大牛团又喜提一位传奇少年&#xff1a;Sam Altman。除了16岁出柜&#xff0c;20岁和男友一同当上CEO这样的轶事&#xff0c;这位大佬近日还…

unapp微信小程序转发分享、携带参数

一、第一种方式&#xff1a; // 开启小程序原生右上角分享按钮uni.showShareMenu({// https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share.htmlwithShareTicket: true,menus: [shareAppMessage, shareTimeline]//开启转发好友和转发朋友圈按钮});…

暂停GPT-5研发呼吁引激战!吴恩达、LeCun带头反对,Bengio站队支持

【导读】千人签名的AI不扩散条约发布一天后&#xff0c;各路大佬纷纷有了后续回应&#xff0c;言谈间耐人寻味。「AI吹哨人」&#xff1a;不封杀超强AI研发&#xff0c;我们都得死&#xff01; 昨天&#xff0c;千位大佬写的暂停超强AI训练六个月的联名信&#xff0c;如同一枚…

Yann LeCun:ChatGPT缺乏创新,没什么革命性;

来源&#xff1a;机器之心 在外界看来&#xff0c;ChatGPT 是一项巨大突破&#xff0c;但图灵奖得主、Meta 首席人工智能科学家 Yann LeCun 不这么认为。 自从去年底推出以来&#xff0c;对话式 AI 模型 ChatGPT 火遍了整个社区。 用过 ChatGPT 的人都能体会到&#xff0c;它是…

LeCun和马库斯齐喷ChatGPT:大语言模型果然是邪路?

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>【计算机视觉】微信技术交流群 转载自&#xff1a;新智元 【导读】大语言模型在祛魅&#xff0c;媒体忽然开始追捧起了LeCun&#xff0c;而马库斯跳出来说&#xff0c;他的观…

LeCun再爆金句:ChatGPT?连条狗都比不上!语言模型喂出来的而已

【导读】LeCun昨天在一场辩论中再贬ChatGPT&#xff01;形容这个AI模型的智力连狗都不如。 图灵三巨头之一的LeCun昨日又爆金句。 「论聪明程度&#xff0c;ChatGPT可能连条狗都不如。」 这句话来自本周四LeCun在Vivatech上和Jacques Attalie的一场辩论&#xff0c;可谓精彩…

提高工作效率 | ChatGPT效率神器推荐

司马阅(SmartRead) 基于ChatGPT技术的PDF解读工具可以让用户像与人类交互一样与PDF文档进行交互。这款解读工具利用ChatGPT技术&#xff0c;可以实现对PDF文档的自然语言处理和理解。用户可以直接对话式地与PDF文档进行交互&#xff0c;获得更加直观和深入的文件解读和分析。 …

ChatGPT和New Bing两大神器在手,天下我有

ChatGPT和New Bing两大神器在手&#xff0c;天下我有 终于搞定了两个神器&#xff0c;极大的解放生产力 ! 从中可以看到两个工具的区别

李开复:我亲自筹组Project AI 2.0 不仅仅要做中文版ChatGPT

雷递网 乐天 3月19日 创新工场董事长、CEO李开复今日称&#xff0c;其正在亲自筹组 Project AI 2.0&#xff0c;一个致力打造 AI 2.0全新平台和 AI-first 生产力应用的全球化公司。 这是一家由技术愿景驱动&#xff0c;拥有卓越中国工程底蕴的创新企业&#xff0c;在全球范围号…

ChatGPT-4 表现不佳(变笨)?开发者解释原因并承认存在不稳定性

最近&#xff0c;OpenAI 开发的大模型 GPT-4 出现了一些问题&#xff0c;被质疑是否变笨了。根据 Hacker News 上的一篇帖子&#xff0c;发帖人称 GPT-4 生成的代码错误更多了&#xff0c;给出的答案不再有深度了。这个帖子引发了许多人对 GPT-4 的怀疑和不信任。 然而&#xf…

chatgpt赋能python:Python截图快捷键:让你的截图过程更高效简便

Python截图快捷键&#xff1a;让你的截图过程更高效简便 作为一名Python工程师&#xff0c;你时常需要对自己编写的程序进行调试和测试&#xff0c;有时需要将程序的运行结果截图给同事或客户看。除此之外&#xff0c;你可能也经常需要截取网页、软件界面等信息。不论场景如何…

chatgpt赋能python:Python屏幕截图:完美的方法记录你的屏幕

Python屏幕截图&#xff1a;完美的方法记录你的屏幕 Python作为一种高级编程语言&#xff0c;被广泛用于开发各种应用程序和游戏&#xff0c;其中之一就是屏幕截图。 在本文中&#xff0c;我们将介绍使用Python进行屏幕截图的方法和技巧。 什么是屏幕截图&#xff1f; 屏幕截…

chatgpt赋能python:Python自动截屏教程

Python 自动截屏教程 介绍 Python 是一种高级程序设计语言&#xff0c;已广泛用于各种应用中&#xff0c;从 Web 开发到机器学习都有很多案例。其中&#xff0c;Python 的截屏功能得到了越来越多的关注&#xff0c;因为在很多应用场景中&#xff0c;自动截屏可以帮助我们更有…