在《COLOR和COLORREF之间的理解与相互转换》一文中,我已解释过了相关的概念。现在就是具体实现了。
在我升级软件的时候,这个转换问题还真是费神,额..是这样的。我创建了颜色对话框后,需要将我从对话框中选择的颜色弄到GDI+的画刷Brush类中,可遇到了类型转换,这时候,我第一次试的就是强制类型转换,但是没用,那好吧,只能另想办法。下面我们看代码:
void CPictureProcessDlg::OnClickedColor()
{
if (IDOK == colordlg.DoModal()) // 显示颜色对话框
{
// 如果点击了颜色对话框的“确定”按钮,则执行以下操作
// 获取颜色对话框中选择的颜色
color = colordlg.GetColor();
r = GetRValue(color);
g = GetGValue(color);
b = GetBValue(color);
}
}
我们接下来创建GDI画刷,你得注意了,变量r,g,b得是全局变量,而且是BYTE类型,为什么是这个类型?你可以看《COLOR和COLORREF之间的理解与相互转换》
Brush *brush = new SolidBrush(Color(r, g, b));//定义GDI+画刷对
在这里说一句,我写的文章90%都是自己的心得体会,以及自己写程序做软件时实战典例。实用性还是不错的,不能错过哦!