C++/GDI+ 学习笔记(四)——实用技巧——颜色矩阵(ColorMatrix)

来源:互联网 发布:常州小河淘宝客服招聘 编辑:程序博客网 时间:2024/06/05 12:01


颜色矩阵在GDI+中是十分有用的。 一位颜色信息,由ARGB四部分组成,分别是透明度和三个颜色分量。一个44的矩阵即可完整的表示出一个颜色的矩阵,但4*4矩阵无法完成一些变换(例如平移),所以补成了一个55的矩阵。最后的一位一直是1。
TAG: GDIPlus  
 

颜色矩阵在GDI+中是十分有用的。

一位颜色信息,由ARGB四部分组成,分别是透明度和三个颜色分量。一个4×4的矩阵即可完整的表示出一个颜色的矩阵,但4*4矩阵无法完成一些变换(例如平移),所以补成了一个5×5的矩阵。最后的一位一直是1。
ColorMatrix colorMatrix = {
           0.3f,     0.3f,     0.3f,     0.0f,     0.0f,
           0.59f,   0.59f,   0.59f,   0.0f,     0.0f,
           0.11f,   0.11f,   0.11f,   0.0f,     0.0f,
           0.0f,     0.0f,     0.0f,     0.3f,     0.0f,
           0.0f,     0.0f,     0.0f,     0.0f,     1.0f };
上面的这个矩阵,是将图片转换成灰阶形式,即去色。[4][4]的位置即是永远为1。[3][3]处,是透明度,这里设置的是30%,所有的数字都是最大为1,即100%。
0.3×Red + 0.59×Green + 0.11×Blue 即是某点颜色的灰阶值。
 

  1. ColorMatrix colorMatrix = {  
  2.            0.3f,     0.3f,     0.3f,     0.0f,     0.0f,  
  3.            0.59f,   0.59f,   0.59f,   0.0f,     0.0f,  
  4.            0.11f,   0.11f,   0.11f,   0.0f,     0.0f,  
  5.            0.0f,     0.0f,     0.0f,     0.3f,     0.0f,  
  6.            0.0f,     0.0f,     0.0f,     0.0f,     1.0f };  
  7.    
  8.       ImageAttributes imageAtt;  
  9.       imageAtt.SetColorMatrix( &colorMatrix );  
  10.    
  11.       Bitmap Bmp( “a.bmp” );  
  12.       INT iWidth = Bmp.GetWidth();  
  13.       INT iHeight = Bmp.GetHeight();  
  14.    
  15.       Graphic.DrawImage(  // Graphic是事先初始化好的Graphics  
  16.            &Bmp,   
  17.            Rect(0, 0, iWidth, iHeight),  
  18.            0,  
  19.            0,  
  20.            iWidth,  
  21.            iHeight,  
  22.            UnitPixel,   
  23.            &imageAtt);   

 

(eplanet)
原创粉丝点击