afan 发表于 2019-12-6 10:31:24

PixelCatcher[屏幕图片取色]

本帖最后由 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下载
**** Hidden Message *****

chzj589 发表于 2019-12-6 12:03:25

赞!经常为取色烦恼,这就可帮助解决了

chishingchan 发表于 2019-12-6 13:18:37

a版又有新作了!

nmgwddj 发表于 2019-12-6 14:11:01

厉害,想了解区域放大是如何实现的。

qxguoxing 发表于 2019-12-6 14:39:16

a大作品就是牛掰,来学习一下。

haijie1223 发表于 2019-12-7 10:09:45

nmgwddj 发表于 2019-12-6 14:11
厉害,想了解区域放大是如何实现的。

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

afan 发表于 2019-12-7 10:21:50

放大简单,使用 _WinAPI_BitBlt() 直接复制源矩形到目标矩形,目标矩形大于源矩形就放大了。当年玩马赛克就有讨论

afan 发表于 2019-12-7 10:29:14

昨晚又设计了一种思路,直接在程序窗口用鼠标操作采集源区域(就像远程一样),点击大方块的像素点即可采集,可更方便懒得用热键操作的

862228699 发表于 2019-12-7 12:31:26


厉害:face (1):

floor6ggg 发表于 2019-12-7 15:44:27

先手机回复霸位,可惜电脑不在身边!!!回家后再感叹号!!!

绿色风 发表于 2019-12-8 19:25:17

赞一个.早期之前@tryhi好像也写了个类似的

afan 发表于 2019-12-8 19:31:38

绿色风 发表于 2019-12-8 19:25
赞一个.早期之前@tryhi好像也写了个类似的

肯定有类似的 呵呵~我也是最近有此需要才写的 习惯自给自足了 :face (33):

绿色风 发表于 2019-12-8 19:46:24

afan 发表于 2019-12-8 19:31
肯定有类似的 呵呵~我也是最近有此需要才写的 习惯自给自足了

自给自足的东西才熟悉:face (15):

afan 发表于 2019-12-8 19:49:11

绿色风 发表于 2019-12-8 19:46
自给自足的东西才熟悉

就是这个理代码总是写一次就更熟悉一点~ :face (12):

wyl0205 发表于 2019-12-9 11:00:29

这个赶紧收下,一会没了
页: [1] 2 3 4 5 6
查看完整版本: PixelCatcher[屏幕图片取色]