鱼C论坛

 找回密码
 立即注册
查看: 645|回复: 0

[学习笔记] 屏幕拾色器的过程

[复制链接]
发表于 2022-9-19 10:22:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

新手新手,不敢班门弄斧


代码和程序在附件



在写这个程序中发现GetPixel函数获取的位置的像素似乎不正确,于是开始在网上查找,找到了原因:
  1. /*
  2.                 可能的原因
  3.                 如果显示器分辨率(每英寸的像素数)过高,Windows会拉伸图形,即所谓DPI缩放,
  4.                 导致应用程序GetPixel取到的点跟鼠标箭头不一致。(详细描述见参考链接)

  5.                 解决方法
  6.                 在进入WinMain函数后立即调用SetProcessDPIAware函数,以告知Windows系统本程序支持DPI。
  7.         */
复制代码


其次,改变背景颜色  这里背景颜色设置为获取的颜色
  1. hBrush = CreateSolidBrush(color);
  2. hOldBrush = SetClassLongPtr(hwnd, GCLP_HBRBACKGROUND, (LONG)hBrush);  // 替换指定窗口类的结构
复制代码


然后,设置DrawText的颜色, 发现 SetROP2 设置反色不能改变DrawText的颜色, 于是使用以下方式
  1. SetTextColor(hdc, RGB(255 - GetRValue(color), 255 - GetGValue(color), 255 - GetBValue(color)));   // 将字体颜色设置为背景颜色的 反色
复制代码


这里注释的不知道对不对
  1. *cxWindow = tm.tmAveCharWidth * 20 + GetSystemMetrics(SM_CXBORDER) * 2;  // 20个平均字体宽度 + 2 个窗口边框宽度
  2.         *cyWindow = tm.tmHeight * 3 + GetSystemMetrics(SM_CYBORDER) * 2 + GetSystemMetrics(SM_CYCAPTION);  // 3个字体高度 + 窗口边框 + 标题高度
复制代码


比较简易 ,通过观看小甲鱼的视频教程+Windows程序设计第5版这本电子书


屏幕拾色器.zip

15.46 KB, 阅读权限: 1, 下载次数: 0

售价: 1 鱼币  [记录]  [购买]

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-17 06:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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