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

        颜色矩阵在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 即是某点颜色的灰阶值。
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 };
 
      ImageAttributes imageAtt;
      imageAtt.SetColorMatrix( &colorMatrix );
 
      Bitmap Bmp( “a.bmp” );
      INT iWidth = Bmp.GetWidth();
      INT iHeight = Bmp.GetHeight();
 
      Graphic.DrawImage(  // Graphic是事先初始化好的Graphics
           &Bmp,
           Rect(0, 0, iWidth, iHeight),
           0,                                                               
           0,                                                               
           iWidth,                                             
           iHeight,                                            
           UnitPixel,
           &imageAtt);


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/eplanet/archive/2007/10/15/1825010.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值