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

原创 2007年10月15日 08:59:00
         颜色矩阵在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);

GDI+学习及代码总结之-----坐标变换、矩阵变换及色彩变换

坐标变换、矩阵变换 在Graphics类中,有几个函数实现了简单的坐标变换 Graphics::TranslateTransform(dx, dy, order)//平移坐标系 Graph...
  • harvic880925
  • harvic880925
  • 2013年06月18日 15:21
  • 7581

GDI+学习及代码总结之-----画笔

画笔 一、构造函数 画笔有两个构造函数,分别看下: Pen( const Color& color, REAL width); Pen( const Brush* brush, REAL ...
  • harvic880925
  • harvic880925
  • 2013年06月05日 11:10
  • 8057

Armadillo C++ linear algebra library 学习笔记(4)——矩阵的运算

1、矩阵的四则运算A、通过”+”、“-”、”*”、”/”、”%”分别进行矩阵的加、减、乘、点除、点乘运算。 B、示例 //1、构造矩阵A、B mat A(2,2),B(2,2); ...
  • jnulzl
  • jnulzl
  • 2015年07月09日 19:09
  • 2535

C++/GDI+ 学习笔记(四)——实用技巧——调色板(ColorPalette)

在使用的过程中,遇到了这样的一个情况。维护很久前的一个项目的时候,想把之前的程序作成DLL。里面有一部分是描画一张8位DIB图片的,用的是纯C写的一段代码。可是在使用的时候发现,GDI+中由于使用了A...
  • Mirage520
  • Mirage520
  • 2012年05月10日 11:49
  • 1304

C++/GDI+ 学习笔记(一)——安装、配置&使用

使用GDI+很简单。需要做的有一下几个步骤。 1.       安装GDI+ SDK开发包。网上很多地方都有下载。解压到一个地方即可。 2.       设置编译器的包含路径,VC6的设置...
  • Mirage520
  • Mirage520
  • 2012年05月10日 11:48
  • 507

C++/GDI+ 学习笔记(三)——基础

使用GDI+的一些基础知识。对一些常用的类进行了简单的介绍。 TAG: GDIPlus     GDI+ 的主要画刷 SolidBrush 单色画...
  • hireboy
  • hireboy
  • 2013年05月29日 16:20
  • 3049

C++/GDI+ 学习笔记(一)——安装、配置&使用

使用GDI+很简单。需要做的有一下几个步骤。  1. 安装GDI+ SDK开发包。网上很多地方都有下载。解压到一个地方即可。  2. 设置编译器的包含路径,VC6的设置方法是 Tools/Opti...
  • hireboy
  • hireboy
  • 2013年05月29日 16:18
  • 6575

GDI+ for VCL基础 -- 颜色调整矩阵ColorMatrix详解

原文http://blog.csdn.net/maozefa/article/details/1995949 本文为GDI+ for VCL基础系列文章之一,主要供GDI+初学者入门参考,例子使...
  • a1522749042
  • a1522749042
  • 2012年10月14日 15:12
  • 510

C++/GDI+ 学习笔记(五)——应用实例——半透明的阴影效果

利用 GDI+可以很容易的描画出逼真的半透明效果的阴影。 void DrawShadow(Graphics &g, GraphicsPath ButtonPath) {     g.SetPag...
  • Mirage520
  • Mirage520
  • 2012年05月10日 11:49
  • 1119

C#学习笔记30——C# GDI+绘图

GDI+ 是 Windows XP 操作系统中提供二维矢量图形、图像处理和版式的部分。GraphicsDevice Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能;在...
  • byxdaz
  • byxdaz
  • 2011年09月04日 14:22
  • 12263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++/GDI+ 学习笔记(四)——实用技巧——颜色矩阵(ColorMatrix)
举报原因:
原因补充:

(最多只允许输入30个字)