首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Python在屏幕上选择一个区域并使未选中的区域变暗?

如何使用Python在屏幕上选择一个区域并使未选中的区域变暗?
EN

Stack Overflow用户
提问于 2013-07-04 01:22:05
回答 1查看 1.5K关注 0票数 1

我正在构建一个屏幕捕获应用程序,并且我正在使用wxPython,但是可以为这个任务推荐另一个库。

我可以在屏幕上放置一个全屏半透明的框架,也可以在上面画一个矩形。但是如何使这个矩形完全透明,而框架的其余部分保持半透明呢?

我以前在裁剪图像时遇到过这个问题。我必须使用两张图片,一张是隐藏的,另一张是用户选择要裁剪的区域。一旦用户做出选择,我计算坐标,裁剪隐藏的图像,并将其显示在半透明图像的顶部。如果可能的话,我想在这里避免这种情况。如果用户想要捕获视频或移动对象的屏幕,该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-04 01:29:47

我可以在屏幕上放置一个全屏幕,半透明的框架,我可以在上面画一个矩形。但是如何使这个矩形完全透明,而框架的其余部分保持半透明呢?

你不能。一个完全透明的矩形只会显示它后面的任何东西,这是一个半透明的矩形。

但你可以很容易地扭转局面。创建一个完全透明的框架,然后在框架顶部绘制一个半透明区域-即,除矩形之外的所有区域。

第一种方法不起作用的原因是,你的全透明矩形只会显示它背后的东西,这是一个半透明的矩形。

有许多方法可以绘制这样的区域。

最简单的方法是将它分成四个矩形,如下面的伪代码所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
drawrect(0, 0, top, -1)
drawrect(top, 0, bottom, left)
drawrect(top, 0, bottom, right)
drawrect(bottom, 0, -1, -1)

构建一个区域可能更具可读性(只需构建一个完整的框架区域,然后减去rect),但绘制一个区域会更痛苦。或者,您可以在您的矩形周围绘制一个未填充的矩形,然后在窗口边框周围绘制另一个矩形,然后从(1,1)泛洪,但随后您必须处理off-by-one错误。或者你可以创建一个有8个像素的多边形,然后欺骗缠绕规则。诸若此类。但我认为这是最简单的。

假设你用这些点构建了一个“多边形”:TL,TR,BR,BL,br,tr,TL,TL (其中caps表示外矩形边,小写内矩形边)。这根本不是一个真正的多边形,但是如果你请求what pixels are inside that polygon (就像你告诉它用填充绘制多边形时那样),wx必须做一些事情。wx有两个规则可供选择:even-odd规则计算从像素到无穷远点的某条线穿过多边形的次数,而winding-number规则计算多边形在像素周围产生的循环次数。

奇偶规则:两个矩形内的每个像素都有2个或4个交叉点(取决于无穷远的点是否在这条线上)。这两个外部的每个像素都有0、2、4或6(因为它可能只穿过外部矩形,或者两者都交叉,并且在任何一种情况下都可能跨越直线)。它们之间但不在直线上的每个像素都有1、3或5(因为它将恰好与外部矩形相交一次,并且可能会与内部矩形和/或直线相交)。…行上的每个像素这就是它变得棘手的地方。wx让每个平台后端来实现规则,在其中一些平台上,线上的一些点可能会被视为从一条线开始并跨越另一条线,这意味着它们以2个(或4个)交叉结束,因此不会被填充。因此,您可以最终得到一组间隙,这些间隙共同组成一条1像素宽的虚线。绘制一个笔划和一个填充应该可以修复它,但我不确定它是否能做到。

缠绕规则:理论上,屏幕上任何地方的每个像素都应该考虑到外部,而不是填充。然而,它的实际实现方式是,在两个矩形内部或外部的像素都可以看到曲线的一半完全抵消了另一半,而矩形之间的像素只能看到直线自身抵消,而矩形都显示为顺时针方向。即使平台做了一些奇怪的事情,并且没有看到线条自动抵消,这仍然是好的;它只会使像素抵消得更少。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17460541

复制
相关文章
eclipse没有server项,解决办法「建议收藏」
打开eclipse – 窗口 – 首选项 – 服务器 – 运行时环境 找到Tomcat然后添加。
全栈程序员站长
2022/07/25
1K0
eclipse首选项里面没有Server(eclipse的server视图)
①在软件eclipse下的Help->InstallNew Software->中,在Work with中点击Add,如下,加入Name——”Kepler” repository;Location——http://download.eclipse.org/releases/kepler
全栈程序员站长
2022/08/01
1.4K0
eclipse首选项里面没有Server(eclipse的server视图)
针对简书的崩溃给出自己的建议
简书确实几乎每个月都会崩溃,一次崩很长时间....作为一个研发人员,为了更好的使用这个平台,对于我目前发现的问题,我给出自己的一点点建议
名字是乱打的
2022/03/04
4570
eclipse 导入maven工程 在libraries 没有maven Dependencies「建议收藏」
导入maven工程的时候所有的依赖包下载不下来,最后而且在工程的buildPath====>java BuildPath====>libraries 中没有maven Dependencies,显示为 org.eclipse.ide.MAVEN2_CLASSPATH_CONTAINER
全栈程序员站长
2022/09/04
1.7K0
Numpy中的通用函数
NumPy数组的计算:通用函数缓慢的循环通用函数介绍探索Numpy的通用函数高级通用函数的特性聚合:最小值、 最大值和其他值数组值求和最大值和最小值其他聚合函数
用户3577892
2020/06/12
1.9K0
【Java框架型项目从入门到装逼】第二节 - Spring框架 AOP的丧心病狂解说,你喜欢露娜的月下无限连吗?据说露娜要重做,玩个屁,劳资退游吃鸡去了,谢谢。
继续上一节的内容,多几个jar包: image.png aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想。AOP底层也是面向对象;只不
剽悍一小兔
2018/05/17
8410
eclipse里没有server选项怎么办(eclipse中没有server选项)
用eclipese写网页很多时候需要配置tomcat,但有些朋友跟着网上的教程配置发现eclipse->【Window】->【Preferences】里没有【server】从而配置不了Runtime Environment。所以需要通过eclipse进行安装。 下面给出解决办法 首先,获取你的eclipse的版本类型,点击【help】->【about eclipse IDE】
全栈程序员站长
2022/08/01
1.3K0
eclipse里没有server选项怎么办(eclipse中没有server选项)
eclipse设置中没有server选项[通俗易懂]
用eclipse准备配置tomcat,发现配置中没有server选项,参考各种解决方法之后成功解决。
全栈程序员站长
2022/08/01
6.4K1
eclipse设置中没有server选项[通俗易懂]
Eclipse项目红色叹号且没有错误的包
直接右击项目–>build path–>Configure build path找到Libraries这一项 对于一般的问题,看看哪个jar包报错删了clean一下就好了。
程裕强
2022/05/06
1.2K1
Eclipse项目红色叹号且没有错误的包
MRP没有跑出建议的几种案例
有时我们运行MRP,但系统并没有跑出采购申请或者计划订单(后文统称建议),并且当前也没有库存或其他供应能满足需求,到底是什么原因导致的呢?本篇将给大家分析几个常见的原因。
老铁一起学
2021/02/22
4.9K0
MRP没有跑出建议的几种案例
python numpy--矩阵的通用函数
通用函数(ufunc)是一种对ndarray中的数据执行元素级运算的函数。你可以将其看作简单函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器通用函数的输入是一组标量,输出也是一组标量,它们通常可以对应于基本数学运算,如加、减、乘、除等。
用户7886150
2021/01/08
1.2K0
eclipse没有server选项怎么解决
eclipse是一个开放源代码的、基于java的可扩展开发平台。它使用频率十分高,然而当使用它部署项目时候,经常会发现一个重要的问题就是打开eclipse之后没有了server选项,那么该怎么解决这个问题呢?
全栈程序员站长
2022/07/23
2.5K0
eclipse没有server选项怎么解决
通用系统函数
熟练掌握Win32 API函数的参数传递,是软件逆向的基础,本章节内容将使用MASM汇编器,逐个编译这些源程序,你可以通过使用一些调试工具,这里推荐OllyDBG来附加编译后的可执行文件,进行逐个分析,观察二进制程序逆向后的一些变化,总结吸收经验,为以后的二进制逆向,漏洞挖掘打基础.
微软技术分享
2022/12/28
1.1K0
oracle 常见函数_oracle有没有包含的函数
2. 聚合函数(多行函数、分组函数、组函数):操作多行数据,并返回一个结果。比如 SUM
全栈程序员站长
2022/11/01
2.9K0
Eclipse中SVN插件的基本使用「建议收藏」
提交代码的时候,点击整个项目,右键—team—与资源库同步,这个目的是检查本地的代码和服务器上的代码有没有冲突,如果有冲突的话,应该像将冲突解决,否则提交代码会出错,解决冲突看我的另一篇博客。
全栈程序员站长
2022/11/09
5640
Eclipse中SVN插件的基本使用「建议收藏」
Eclipse的代码自动补全功能「建议收藏」
众所周知Eclipse是一款非常智能的IDE工具,那么我们如何设置才能让它更为智能呢?本文主要介绍以下两点内容。
全栈程序员站长
2022/09/02
2.8K0
Eclipse的代码自动补全功能「建议收藏」
eclipse导入maven工程报错的解决「建议收藏」
从svn检出的代码出现报错,花了不少时间解决,自己摸索的话得花不少时间!在这里总结一下遇到的导入maven工程后报错的解决方法 。
全栈程序员站长
2022/09/04
1.8K0
eclipse导入maven工程报错的解决「建议收藏」
2020最新eclipse安装教程,配有每一步的安装过程和细节!「建议收藏」
已经下过好几次了,现在还是忘了。就把过程直接放上面了。下次再换电脑就直接可以看。。。
全栈程序员站长
2022/06/29
8460
2020最新eclipse安装教程,配有每一步的安装过程和细节!「建议收藏」
eclipse导入maven工程出现的问题「建议收藏」
最近自己找了一个ssm框架想学习一下,但是用eclipse导入maven工程后出现了以下问题: error1:Description Resource Path Location Type Project configuration is not up-to-date with pom.xml. Run Maven4MyEclipse->Update Project or use Quick Fix. error2:java compiler level does not match the version of the installed java project facet
全栈程序员站长
2022/09/02
3660
点击加载更多

相似问题

Eclipse露娜中PDT的失效安装

10

无法在eclipse中安装PDT露娜

24

在Eclipse露娜上安装PHP插件PDT

24

Eclipse露娜版本4.4.2没有显示对java 8的建议

11

没有内置插件的Eclipse露娜

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文