用户名: 密码: 验证码: 注册           网站地图 高级搜索 RSS订阅 收藏本站
山东十七地市站长联盟信息: 济南 青岛 淄博 枣庄 东营 烟台 潍坊 济宁 泰安 威海 日照 莱芜 临沂 德州 聊城 滨州 菏泽      
您的位置:主页>网络编程>.Net编程>

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

[ 来源:Linux宝库 | 作者:岩塑 | 更新日期:2007-5-31 21:40:40 | 评论 0 条 | 我要投稿 ]
如果使用MFC与.NET混合编程,就会遇到这个问题,通过MFC编写的控件,由.NET调用,则控件中背景色的设置,需要颜色的转换。

COLORREF类型颜色的值COLORREFcr=RGB(123,200,12);  字串6

其中的R、G、B三个分量的排列顺序是BGR。

字串4

   .NET中通过数据类型Color表示颜色,该类有一个函数FromArgb(int,int,int),可以通过输入RGB三个值得到一个Color类型的颜色。同时也有一个ToArgb()函数,得到一个32位的整数值, 字串5

    32位ARGB值的字节顺序为AARRGGBB。由AA表示的最高有效字节(MSB)是alpha分量值。分别由RR、GG和BB表示的第二、第三和第四个字节分别为红色、绿色和蓝色颜色分量 字串2

了解了上面的内容,颜色的转换就很简单了。 字串1

1、从Color到COLORREF

字串6

           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;

字串9

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

字串8

intred=nColorRef&255; 字串3

intgreen=nColorRef>>8&255;

字串8

intblue=nColorRef>>16&255;

字串3

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

字串2

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

字串2

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

字串4

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

字串5


Tags:
您的评论
用户名:新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为