科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道WIN32颜色值与.NET颜色值的转换

WIN32颜色值与.NET颜色值的转换

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

   如果使用MFC与.NET混合编程,就会遇到这个问题,通过MFC编写的控件,由.NET调用,则控件中背景色的设置,需要颜色的转换。

作者:中国IT实验室 来源:中国IT实验室 2007年9月11日

关键字: 颜色值 编程

  • 评论
  • 分享微博
  • 分享邮件
     如果使用MFC与.NET混合编程,就会遇到这个问题,通过MFC编写的控件,由.NET调用,则控件中背景色的设置,需要颜色的转换。

COLORREF类型颜色的值COLORREFcr=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

           intnColor=crColor.ToArgb();
           intblue=nColor&255;
           intgreen=nColor>>8&255;
           intred=nColor>>16&255;
           
           //注意COLORREF中颜色的排列是BGR,而通过Color.ToArgb()得到的数值中颜色排列是AARRGGBB
           intnColorRef=blue<<16|green<<8|red;

2、从COLORREF到Color(注意COLORREF中颜色的排列是BGR,红色分量在最后面)

intred=nColorRef&255;

intgreen=nColorRef>>8&255;

intblue=nColorRef>>16&255;

ColorcrColor=Color.FromArgb(red,green,blue);

或者直接通过下面的代码:

 Color.FromArgb(nColorRef&255,nColorRef>>8&255,nColorRef>>16&255);

注:上面的代码使用C#编写。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章