zoukankan      html  css  js  c++  java
  • 关于COLORREF的定义及用法

    转载自http://blog.sina.com.cn/s/blog_65cab32d010136cl.html

    一、什么是COLORREF?

      COLORREF类型用来描绘一个RGB颜色。其定义如下:

      

    typedef DWORD COLORREF;
    typedef DWORD *LPCOLORREF;

      COLORREF类型变量值描绘一个颜色时对应于下面16进制的格式:

      0x00bbggrr

      可以用这样一个结构体来描述。

      

    RGB_value struct
    {
         byte unused ;
         byte blue ;
         byte green ; 
         byte red;
    };
    

      

      其中第一字节为 0 而且始终为 0,其它三个字节分别表示蓝色、绿色和红色,刚好和 RGB 的次序相反。这个结构体用起来挺别扭。

    二、如何使用

    对于COLORREF,我们通常使用宏RGB对其进行赋值。

      宏的定义如下:

      COLORREF RGB

      (

      BYTEbyRed, // red component of color

      BYTEbyGreen, // green component of color

      BYTEbyBlue // blue component of color

      );

      COLORREF 是一个 32-bit 整型数值,它代表了一种颜色。

    方法一:你可以使用 RGB 函数来 初始化 COLORREF。

        例如:

      COLORREF color=RGB(0,255,0);

    RGB函数接收三个 0-255 数值,一个代表红色,一个代表绿色,一个代表蓝色。在上面的例子中,红色和蓝色值都为 0,所以在该颜色中没有红色和蓝色。绿色为最大值255。所以该颜色为绿色。0,0,0 为黑色,255,255,255 为白色

     

    方法二:

      CColorDialog colorDialog;

      COLORREF color;

      if( colorDialog.DoModal() == IDOK )

      {

      color = colorDialog.GetColor();

      }

      这段代码使用了 MFC 中的颜色对话框,它需要文件。

      如何从COLORREF中获取RGB分量值:

      COLORREF colorrrefRGB =RGB(120,250,110);

      BYTE r = GetRValue(colorrrefRGB);

      BYTE g = GetGValue(colorrrefRGB);

      BYTE b = GetBValue(colorrrefRGB);

  • 相关阅读:
    桶排序
    向控件添加变量之后,类中多了什么?
    atan2&sin
    Bug(1)
    十六进制转化二进制[c]
    接口性能分析与优化
    记一次内存泄漏DUMP分析
    偏移二分查找
    iOS开发——自定义密码输入键盘
    iOS开发——手机号,密码,邮箱,身份证号,中文判断
  • 原文地址:https://www.cnblogs.com/Es-war/p/12828720.html
Copyright © 2011-2022 走看看