鱼C论坛

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

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

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

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

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

x

新手新手,不敢班门弄斧


代码和程序在附件



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

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

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

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

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

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


屏幕拾色器.zip

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

售价: 1 鱼币  [记录]

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 22:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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