COLORREF和COLOR和RGB的总结
一、COLORREF与RGB的相互转化 
 RGB(r,g,b)是一个宏
 
 实际上它做得事是((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16)))
rgb(r,g,b) = 一个整型值 = r + g * 256 + b*255*256
COLORREF 是 一 个 32-bit 整 型 数 值,它 代 表 了 一 种 颜 色。你 可以 使 用 RGB 函 数 来 初 始 化 COLORREF
 
 它的定义
 
 typedef DWORD   COLORREF;
COLORREF变量有两种赋值方法
 
 第一种
 
 COLORREF cf = RGB(,,);
 
 第二种
 
  CColorDialog colorDialog;
 
  COLORREF color;
if( colorDialog.DoModal() == IDOK )
 
     {
 
         color = colorDialog.GetColor();
 
     }
 
 这 段 代 码 使 用 了 MFC 中 的 颜 色 对 话 框
如何从 COLORREF中取出RGB分量值?
 
 可以使用宏GetRValue
 
  GetGValue
 
  GetBValue
他们的定义如下
 
 #define GetRValue(rgb)      ((BYTE)(rgb))
 
 #define GetGValue(rgb)      ((BYTE)(((WORD)(rgb)) >> 8))
#define GetBValue(rgb) ((BYTE)((rgb)>>16))
二 、Color与ColorRef(int类型表示的颜色)的相互转换
 实际的软件开发过程中,常需要用到非.net平台的代码。这时候就可能碰到ColorRef(也就是以int类型代表的颜色值
 或是以DWORD值表示的颜色)。这跟.net平台下的颜色的相互转换MS并没有直接实现。那么就需要我们自己处理
 了。这里给出两个函数。                   
 uint GetCustomColor(Color color)
 {
int nColor = color.ToArgb();
int blue = nColor & 255;
int green = nColor >> 8 & 255;
int red = nColor >> 16 & 255;
return Convert.ToUInt32(blue << 16 | green << 8 | red);
}
Color GetArgbColor(int color)
{
int blue = color & 255;
int green = color >> 8 & 255;
int red = color >> 16 & 255 ;
return Color.FromArgb(blue, green, red);
}
注:COLORREF中颜色的排列是BGR,而通过Color.ToArgb()得到的数值中颜色排列是AARRGGBB
三、 注意
CColorDialog dlg;
 if(dlg.DoModal() == IDOK)
 {
 //m_FillColor = dlg.GetColor();
 COLORREF ctmpColor = dlg.GetColor();
 Color tmpColor;
 tmpColor.SetFromCOLORREF(ctmpColor);
 ARGB argb = Color::MakeARGB(m_nFillTran, tmpColor.GetR(),tmpColor.GetG(),tmpColor.GetB());
 //Graphics graphics(pDC->m_hDC);
 //HatchBrush hBrush(HatchStyleDashedHorizontal,Color(100,255,0,0), Color(argb));
 tmpColor = argb;
 m_FillColor = tmpColor.ToCOLORREF();
 //m_FillColor = RGB(Color(argb));
}
这是用api函数写的Colorref和color直间的转换。
COLORREF和COLOR和RGB的总结的更多相关文章
- 常用icon以及color颜色RGB值和对应颜色效果图
		Android谷歌官方扁平化设计常用icon集合 Android谷歌官方扁平化设计color颜色RGB值和对应颜色效果图. 
- 颜色color转为rgb格式
		function convertHexToRGB(color) { if (color.length === 4) { let extendedColor = &q ... 
- Color Models (RGB, CMY, HSI)
		目录 概 定义 RGB CMY CMYK HSI 相互的转换 RGB <=> CMY CMY <=> CMYK CMY > CMYK CMYK > CMY RGB ... 
- ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】
		版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要用于color整型.rgb数组.16进制互相转换(-12590395 <--> #3FE2C5 <--> ... 
- alphaRGB 转 RGB、16位
		struct xColor { BYTE b, g, r, a; }; struct RGBColor { BYTE b, g, r; }; //void operator <<(RGBC ... 
- RGB,CMYK,HSB各种颜色表示的转换  C#语言
		Introduction Why an article on "colors"? It's the same question I asked myself before writ ... 
- java====color、font、button、label、textfield、textarea使用
		1. Color类 µ 公共静态属性:共13个静态属性,分别代表13种不同的颜色常量. µ 构造函数 ü public Color(int r,int g,int b):以整数形式给出红.绿.蓝三个分 ... 
- 十六进制颜色值和rgb颜色值互相转换
		在之前的一篇文章<将16进制的颜色转为rgb颜色>中,曾经写过将16进制的颜色转换为rgb颜色. 当然了,今天再看,还是有很多可以优化的地方,所以对之前的代码重构了一遍,并且同时写了一个反 ... 
- 颜色选择器   rgb  与16进制 颜色转换
		1. h5 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ... 
随机推荐
- 根据input 标签取value属性的值
			jrhmpt01:/root/lwp/0526# cat a1.pl use LWP::UserAgent; use DBI; use POSIX; use Data::Dumper; use HTM ... 
- android 细节之 旋转动画
			Flip Animation for Android: 近期项目中用到了一个小动画,让物体实现一定的3D旋转效果,现记录例如以下: public class FlipAnimation extends ... 
- Swift - 给表格UITableView添加索引功能(快速定位)
			像iOS中的通讯录,通过点击联系人表格右侧的字母索引,我们可以快速定位到以该字母为首字母的联系人分组. 要实现索引,我们只需要两步操作: (1)实现索引数据源代理方法 (2)响应点击索引触发的代理 ... 
- CSDN头版头条 《近匠》 Wijmo 5 CTO:从Web到移动,我的25年编程生涯
			现年52岁的Bernardo Castilho先生是GrapeCity(中文名为葡萄城)ComponentOne公司的CTO,在与他的对话过程中.充满风趣严谨和厚重的历史感. 当作为年轻人的我们崇拜着 ... 
- 循环json数据的列
			var len = json.length; for (var i = 0; i < len; i++) { for (obj in json[i]) { var obj2 = ... 
- Linux系统基础命令
			这是看itercast的学习笔记 Linux系统基础命令 日期时间 命令date用以查看.设置当前系统时间:格式化显示时间: +%Y--%m--%d 命令hwclock(clock)用以显示硬件时钟时 ... 
- hadoop出现ava.lang.ClassNotFoundException: org.codehaus.jackson.map.JsonMappingException
			Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/jackson/map/JsonMa ... 
- jbpm部署流程定义到MySql报乱码解决方案
			问题起因: 我在使用ant将流程定义和流程相关资源部署到JBPM数据库中的时候,报了下面一个错误. 错误提示,大概是: 11:33:40,781 ERROR JDBCExceptionReporter ... 
- Android使用ksoap2-android调用WebService学习
			之前主要做客户端UI交互,很少处理数据和接触服务端,但现在的移动设备根本不可能离得开网络连接,数据的交换.最近学习的是在android端如何去调用远程WebService,都说WebService是一 ... 
- mysql union ,UNION RESULT
			mysql> explain select * from t100 union all select * from t200; +----+--------------+------------ ... 
