WIN32中颜色值(COLORREF)与.NET中颜色值(Color)的转换 - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- WIN32中颜色值(COLORREF)与.NET中颜色值(Color)的转换 (http://www.webasp.net/article/28/27695.htm) |
| -- 作者:未知 -- 发布日期: 2006-07-03 |
如果使用MFC与.NET混合编程,就会遇到这个问题,通过MFC编写的控件,由.NET调用,则控件中背景色的设置,需要颜色的转换。 COLORREF类型颜色的值COLORREF cr=RGB(123,200,12); 其中的R、G、B三个分量的排列顺序是BGR。 .NET中通过数据类型Color表示颜色,该类有一个函数FromArgb(int,int,int),可以通过输入RGB三个值得到一个Color类型的颜色。同时也有一个ToArgb()函数,得到一个32位的整数值, 32 位 ARGB 值的字节顺序为 AARRGGBB。由 AA 表示的最高有效字节 (MSB) 是 alpha 分量值。分别由 RR、GG 和 BB 表示的第二、第三和第四个字节分别为红色、绿色和蓝色颜色分量 了解了上面的内容,颜色的转换就很简单了。 1、从Color到COLORREF int nColor = crColor.ToArgb(); 2、从COLORREF到Color(注意COLORREF中颜色的排列是BGR,红色分量在最后面) int red=nColorRef & 255; int green= nColorRef >> 8 & 255; int blue= nColor Ref>> 16 & 255; Color crColor=Color.FromArgb(red,green,blue); 或者直接通过下面的代码: Color.FromArgb(nColorRef & 255, nColorRef >> 8 & 255, nColor Ref>> 16 & 255); 注:上面的代码使用C#编写。 |
| webasp.net |