找回密码
 加入
搜索
查看: 28191|回复: 78

[原创] PixelCatcher[屏幕图片取色]

 火.. [复制链接]
发表于 2019-12-6 10:31:24 | 显示全部楼层 |阅读模式
本帖最后由 afan 于 2020-1-11 11:18 编辑



最近做一个屏幕巡查方面的工具,本工具是其组件之一,觉得单独提出来使用也不错~

         

程序简介:
        本程序是一款对屏幕图像或图片文件进行坐标及颜色采集的工具。
        主要用于对屏幕像素点的编程辅助,如搜索、匹配等自动化应用。

程序特点:
        针对像素点的坐标及颜色采集做了非常方便且人性化的功能设计,操作简单,功能丰富。
        采集工作模式有屏幕、窗口、控件、图片等,几乎覆盖最常用的取色模式。
        对目标区域进行像素放大展示,配合热键单像素微移光标,可轻松精准采集单个像素点。
        对目标区域还有截屏功能,生成的图片既可直接采点,亦可作开发的资源文件。

使用说明:
        程序采集工作模式包括以下几种:
        1,屏幕坐标 - 即不区分窗口,整个屏幕都是采集的目标区域,所有坐标均基于屏幕左上角0,0点
        2,窗口坐标 - 针对单个窗口进行采集,所有坐标均基于该窗口左上角0,0点
        3,客户坐标 - 针对窗口的客户区坐标进行采集,可以排除系统主题差异造成的标题栏边框不等的影响
        4,控件坐标 - 应用效率最高的目标区域,因为控件区域相对最小,坐标的影响也最小
        5,图片坐标 - 直接打开截屏或浏览选择的图片进行采集,对于某些易变的场景先截屏是个简单实用的方式
        运行程序即已选择“控件坐标”模式,如上所说,应该是最常用的。推荐的优先级为从4至1,从高到低
        *除“屏幕坐标”和“指定图片坐标”外,其它模式均需拖动左上角的靶标到目标,以确定目标范围
        (*注:1.0及以上版本由于新增并改变了默认方式,所有模式均需先拖动靶标到目标)
        十字放大显示区激活后便可进行采集,方法如下:
        首先移动鼠标到目标的大致范围,若需采集,按下 Ctrl+0 即可生成一行包括XY坐标及色值的色卡
        如需精准定位,可按下 Ctrl+上下左右方向键,即可按1像素的步进值移动,确认再后 Ctrl+0 即可
        另注:1.0及以上版本新增了在本程序界面直接操作鼠标,按住左键拖移定位、右键采点功能
        该功能可更方便直接使用鼠标而非热键操作的用户,且鼠标不用受限制的停留在采点区域
        已将该方式设置为默认方式,如仍需使用原方式可使用热键“Ctrl+]”切换
        生成的色卡可直接点击文本复制使用,点击色块可鼠标定位,以验证准确性
        程序最多保存10个色卡,可使用扫把工具按钮清空
        1.0及以上版本还可导出采集的信息文本
        其它未说明处可悬停各处查阅


更新历史:
200110 1.4 (限时分享结束)
        [修正]对窗口及控件截图缺失右侧及底边一像素的问题
        [修正]点击即时坐标信息无法弹出手动指定坐标对话框的问题
        [修改]复制靶标区标题的高级模式增加包含窗口标题文本

191229 1.3 (未发布)
        [修正]点击无信息的色卡方块时会切换模式的问题
        [新增]点击采集的色卡数据文本,可弹出含以下功能的菜单
           复制该色卡
           复制所有色卡(多个以|分隔连接)
           删除该色卡
           清除所有色卡
        [修正]即时信息色块在光标位于放大区停留可能会轻微闪烁的问题
        [修正]图片模式在满屏显示时可能会遮住主窗口的问题,点击一下图片即可

191214 1.2 (限时分享结束)
        [新增]点击放大窗下方的即时坐标信息可直接输入坐标进行定位查询
           输入后执行可立即光标定位、放大显示及色值信息,相当于采点的逆操作
           该功能对于核查代码中的坐标色值相关数据十分方便
        [新增]静态自采功能
           启动/停止该功能热键“Ctrl+[”,启动后即时信息色块会显示一个“○”,若光标3秒内未移动即开始
           显示变为从3-0的倒计时数字,为零时则自动采集当前位置点,若中途移动了鼠标则回归为“○”
           若自采后光标仍未移动且颜色也未变化则不重复采集,如此循环,直到再次按下相同的热键
           该功能工作时会切换到十字线自由模式,且禁止切换到默认的界面拖移模式,因无意义。
        [修改]拖动靶标或放大显示区域为本程序窗口时忽略处理
        [修改]界面微调,如启动时界面带Logo图片

191213   1.1 (未发布)
        [修正]默认方式按住靶标定位时即时信息坐标正常而色值未更新的问题
        [新增]采集目标使用增强模式,以应对某些带有透明度分层样式无法采集到可见层的问题(如迅雷的浮窗)
           这种方式应该是所见即所得的,但需注意,Au3里的Pixel*内置函数均不会操作该层面窗口
           因此,如果你采集的点需要直接用Pixel*内置函数去操作肯定是行不通的,特此提醒
           也为了提醒,在放大显示下方的即时信息最右侧会有个警示,如与Pixel*识别的不同时即会显现
           点击即时信息颜色方块可切换到普通模式,可作比对
        [修改]在放大显示窗拖移目标区,原以简单的Tooltip浮动方块显示目标位置,现改为包围目标区域的线框
           该线框设为不常用且显眼的紫红色,在移动时会同时在放大窗其移动的轨迹,可简单做到单像素移动
        [修正]图片模式窗口可能会被处于底层而不好操作的问题

191207   1.0 (已分享)
        [新增]导出采集信息功能
        [修改]点击采集的色块查看定位时,若点击时按住鼠标左键不放则等同按住CTRL键点击,可在松开时返回原处
        [新增]直接在本程序放大显示界面操作鼠标,按住左键拖移定位、右键采点功能
           该功能可更方便直接使用鼠标而非热键操作的用户,且鼠标不用受限制的停留在采点区域
           包括“屏幕坐标、图片坐标”在内的所有坐标模式均需首先使用靶标定位
           已将该方式设置为默认方式,如仍需使用原方式可使用热键“Ctrl+]”切换
           推荐的方式为:
           若采点的范围较小(宽高均在几百像素以内),建议直接使用默认方式;
           若范围较大则切换到原屏幕鼠标点方式,毕竟该方式可秒移到任何位置采点,而无需在程序界面拖移
        [修改]几处界面微调及用词调整

191206 发布 0.8.5
        [修正]一处坐标显示问题

191204 初发布0.8


0.8.5下载
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 5威望 +4 金钱 +348 收起 理由
fybhwsx + 40 赞一个!
tubaba + 60 赞一个!
cashiba + 50 很给力!
haijie1223 + 2 + 99 赞一个!
绿色风 + 99 很给力!

查看全部评分

发表于 2019-12-6 12:03:25 | 显示全部楼层
赞!经常为取色烦恼,这就可帮助解决了
发表于 2019-12-6 13:18:37 | 显示全部楼层
a版又有新作了!
发表于 2019-12-6 14:11:01 | 显示全部楼层
厉害,想了解区域放大是如何实现的。
发表于 2019-12-6 14:39:16 | 显示全部楼层
a大作品就是牛掰,来学习一下。
发表于 2019-12-7 10:09:45 | 显示全部楼层
nmgwddj 发表于 2019-12-6 14:11
厉害,想了解区域放大是如何实现的。

截图指定大小的区域,然后放在更大尺寸的image控件上?

评分

参与人数 1金钱 +50 收起 理由
afan + 50 bingo

查看全部评分

 楼主| 发表于 2019-12-7 10:21:50 | 显示全部楼层
放大简单,使用 _WinAPI_BitBlt() 直接复制源矩形到目标矩形,目标矩形大于源矩形就放大了。当年玩马赛克就有讨论
 楼主| 发表于 2019-12-7 10:29:14 | 显示全部楼层
昨晚又设计了一种思路,直接在程序窗口用鼠标操作采集源区域(就像远程一样),点击大方块的像素点即可采集,可更方便懒得用热键操作的
发表于 2019-12-7 15:44:27 | 显示全部楼层
先手机回复霸位,可惜电脑不在身边!!!回家后再感叹号!!!
发表于 2019-12-8 19:25:17 | 显示全部楼层
赞一个.早期之前  @tryhi  好像也写了个类似的

评分

参与人数 1金钱 +50 收起 理由
afan + 50 谢谢反馈 ^ ^

查看全部评分

 楼主| 发表于 2019-12-8 19:31:38 | 显示全部楼层
绿色风 发表于 2019-12-8 19:25
赞一个.早期之前  @tryhi  好像也写了个类似的

肯定有类似的 呵呵~  我也是最近有此需要才写的 习惯自给自足了
发表于 2019-12-8 19:46:24 | 显示全部楼层
afan 发表于 2019-12-8 19:31
肯定有类似的 呵呵~  我也是最近有此需要才写的 习惯自给自足了

自给自足的东西才熟悉
 楼主| 发表于 2019-12-8 19:49:11 | 显示全部楼层
绿色风 发表于 2019-12-8 19:46
自给自足的东西才熟悉

就是这个理  代码总是写一次就更熟悉一点~
发表于 2019-12-9 11:00:29 | 显示全部楼层
这个赶紧收下,一会没了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-21 17:12 , Processed in 0.077405 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表