中间足球图片 创建足球位图 hImageBMP 选入hImageDC
创建单色掩码位图 hMaskBMP 选入hMaskDC(这时候单色位图什么都没有)1.
SetBkColor(hImageDC, RGB(0,0,0xff)); // 设置背景色为蓝色
BitBlt(hMaskDC, 0, 0, nWidthDest, nHeightDest, hImageDC, 0, 0, SRCCOPY); // 拷贝到hMaskDC
说经过以上操作后掩码位图变成如下图片,为什么?这里背景色的作用是什么(发生了什么位操作)?2.
SetBkColor(hImageDC, RGB(0,0,0));
SetTextColor(hImageDC, RGB(255,255,255));
BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);
说这些操作让hImageDC中足球的背景变成黑色,感觉这些操作和 ~S&D相同效果,背景色 前景色是怎么起作用的?求指导!
解决方案 »
- CFile::open 与 ::CreateFile的区别
- URL转发问题
- ATL工程编写ActiveX控件,用regsvr32注册成功,重启蓝屏
- 大家帮我看看这段代码??为什么会报这个错误,别的地方这么写怎么没有问题?
- 完成端口的问题,为什么我分配内存给AcceptEx()参数调用后,用完后再释放内存有问题啊!
- 帮忙!给出一段选择到文件夹的对话框程序。
- ##高手请看## 怎样统计函数运行时间?
- 如何给对话框增加最大化和最小化按扭呢?
- 内存泄漏的疑惑
- 求助:VC+ADO写SQL数据库失败
- MFC 拖动ListCtrl的水平滚动条时候,表头背景超出ListCtrl边界
- 有关MFC中MENU的问题
---这个不大对以下操作可以让足球背景变黑
SetBkColor(hImageDC, RGB(0,0,0));
SetTextColor(hImageDC, RGB(255,255,255));
BitBlt(hImageDC, 0, 0, nWidthDest, nHeightDest, hMaskDC, 0, 0, SRCAND);
这里前景色设置成白色,足球颜色不变化
如果前景色设置成了其它颜色(比如红色),足球颜色发生了变化,说明其它颜色不是转成黑色(背景还是黑)
所以不是简单的黑色 白色的问题
SetTextColor(hImageDC, RGB(255,255,255));
看清楚设置的DC,是在彩色图像上设置背景色为黑色0,前景色为白色0x00FFFFFF,单色图像绘制到这个DC,转换为彩色图像,就将背景色转成黑色,前景色转成白色,然后进行与操作。你指定前景色为红色,则单色图像的前景色黑色转成红色0x00FF0000,与足球颜色相与,足球的红色通道值不变,绿,蓝色通道值变成0,结果足球就变红了。
If the background mode is OPAQUE, the background color is used to fill gaps between styled lines, gaps between hatched lines in brushes, and character cells. The background color is also used when converting bitmaps from color to monochrome and vice versa.
再编码试一下就理解了。