GDI+ ColorMatrix的完全揭秘与代码实现(上)
http://tech.ddvip.com 2008年09月09日 社区交流
内容摘要:GDI+ 提供用于存储和操作图像的 Image 和 Bitmap 类。Image 和 Bitmap 对象将每个像素的颜色都存储为 32 位的数:红色、绿色、蓝色和 alpha 各占 8 位。
无论是用何种语言,只要使用过Windows的GDI+的人对ColorMatrix都不陌生,我的BLOG文章中也多次提到过,并在《GDI+ for VCL基础 -- 颜色调整矩阵ColorMatrix详解》一文中对其功能作了较为详细的讲解,虽然自认对ColorMatrix使用已经相当熟练,但对其原理也是知其然而不知其所以然。直到前几天有位朋友就ColorMatrix实现图像去反功能不正常而问我(见http://topic.csdn.net/u/20080830/20/070c83de-d45b-441f-996e-3c68892855cd.html),我认为不大可能!众所周知,用RGB主对角线-1矩阵实现图像求反是ColorMatrix重要功能之一,可是我试验了多次,那张图片确实不能正常去反。我这人对自己自认熟悉的东西产生怀疑后,就有种不搞明白不罢休的冲动,为此,本人对ColorMatrix的原理作了透彻的解剖,不仅搞清楚了图像去反不正常的原因,还用代码完整地实现了ColorMatrix功能!
准备用3篇文章的内容来与大家分享研究心得,上篇主要介绍ColorMatrix原理揭秘;中篇讲述ColorMatrix的代码实现以及GDI+应用举例,下篇专门介绍不使用GDI+,而用Delphi和BCB的TBitmap甚至TGraphic实现ColorMatrix的全部功能(其实C++用户和VB用户也可作借鉴)。
一、ColorMatrix原理揭秘
虽然我的BLOG中已有2篇文章引用了那段经典的关于ColorMatrix功能介绍的文字,但这里还是再引用一次,作为原理揭秘的开始:
GDI+ 提供用于存储和操作图像的 Image 和 Bitmap 类。Image 和 Bitmap 对象将每个像素的颜色都存储为 32 位的数:红色、绿色、蓝色和 alpha 各占 8 位。这四个分量的值都是 0 到 255,其中 0 表示没有亮度,255 表示最大亮度。alpha 分量指定颜色的透明度:0 表示完全透明,255 表示完全不透明。
来源:blog.csdn 作者:毛泽发 责编:豆豆技术应用
- VC/VC++按钮设计专题
- VC/VC++ 菜单专题
- VC/VC++ 工具条专题
- VC/VC++ 对话框教程
- VC/VC++ 报表教程
- VC/VC++ 控件
- VC/VC++ GDI
- Visual Studio 2008
- VC/VC++ MFC教程
- VC/VC++ QQ
- VC/VC++ Socket编程
- VC/VC++ 钩子编程
- TangramMini组件应用教程
- VC/VC++ 窗体
- VC/VC++ ADO 教程
- Windows CE 教程
- VC/VC++ DLL(动态链接库)编程
- VC/VC++ PDFlib
- VC与MATLAB编程
- VC/VC++ DirectShow 教程
- VC++入门视频教程
- VC/VC++ COM组件设计与应用
- VC/VC++ ATL
- VC/VC++ WTL
- VC/VC++ 定制调试诊断工具和程序
- VC/VC++ 进程
- VC/VC++ Win32
- VC/VC++ WMI
- VC/VC++ 消息
- 更多VC/VC++专题……