屏幕拾色器的过程
新手新手,不敢班门弄斧
代码和程序在附件
在写这个程序中发现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版这本电子书
页:
[1]