很奇怪,一个icon画到两个不同窗口的dc上亮度差很大。不知道什么原因。

eduyu 2008-07-24 12:29:39
还没想到原因
...全文
179 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
eduyu 2008-08-26
  • 打赏
  • 举报
回复
用gdi+简单转icon成bitmap后再画就解决了,不过还没找到原因。
ringphone 2008-07-25
  • 打赏
  • 举报
回复
图片防盗链,好不容易找到,感觉是画的时候进行了ALPHA混合,你窗口是半透明的?
或者是颜色数的问题,内存BMP用CreateCompatibleBitmap创建试试。
lonkil 2008-07-24
  • 打赏
  • 举报
回复
可能是视觉差造成的。
Waiting4you 2008-07-24
  • 打赏
  • 举报
回复
会不会是在内存DC里先画好再画到窗口上去的(双缓冲)? 如果这种情况很可能是内存DC色彩数不同引起的。
cnzdgs 2008-07-24
  • 打赏
  • 举报
回复
可能是Icon中夹杂了一些透明色,显示在不同背景上整体亮度会有所不同,可以用Alt+Print Screen键抓图,用画图工具放大对比来看。
还有一种可能就是明暗不同的背景给人造成的视觉误差。
eduyu 2008-07-24
  • 打赏
  • 举报
回复
一个dc,是client dc:
dc.DrawIconEx(10,20,m_favicon,16,16);

另一个是memeory dc,该dc创建了一个DIB Section:
      CDC dc;
dc.CreateCompatibleDC();
BITMAPINFO bmi = { 0 };
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = rcButton.Width() * NUM_STATES;
bmi.bmiHeader.biHeight = rcButton.Height();
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB;
LPVOID pData = NULL;
m_bmpButton.CreateDIBSection(dc, &bmi, DIB_RGB_COLORS, &pData, NULL, 0);
dc.DrawIconEx(xoffset,ptMiddle.y - (16 / 2),icoIcon,16,16);
eduyu 2008-07-24
  • 打赏
  • 举报
回复

图如上,代码如下:
ringphone 2008-07-24
  • 打赏
  • 举报
回复
帖个图上来看看
菜牛 2008-07-24
  • 打赏
  • 举报
回复
把绘制代码贴出来。
eduyu 2008-07-24
  • 打赏
  • 举报
回复
两个icon差别相当明显,应该不是视觉上的误判。
eduyu 2008-07-24
  • 打赏
  • 举报
回复
毛毛,你说得没错,可是刚才我看了下DC的各个色彩方面的属性,都是一样的。
两个ICON,一个画在mem DC上,该mem DC背后是一个

bmi.bmiHeader.biBitCount = 32;
bmi.bmiHeader.biCompression = BI_RGB;

的DIB section。最后画到窗口上,另一个没用mem DC,直接画到窗口上的。

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧