GDI+ ColorMatrix的完全揭秘与代码实现(上)
2008-09-09 19:25:24 来源:WEB开发网核心提示: 颜色矢量采用 4 元组形式(红色、绿色、蓝色、alpha),例如,GDI+ ColorMatrix的完全揭秘与代码实现(上)(2),颜色矢量 (0, 255, 0, 255) 表示一种没有红色和蓝色但绿色达到最大亮度的不透明颜色,表示颜色的另一种惯例是用数字 1 表示亮度达到最大,在下面的
颜色矢量采用 4 元组形式(红色、绿色、蓝色、alpha)。例如,颜色矢量 (0, 255, 0, 255) 表示一种没有红色和蓝色但绿色达到最大亮度的不透明颜色。
表示颜色的另一种惯例是用数字 1 表示亮度达到最大。使用这种惯例,上一段中描述的颜色将用 (0, 1, 0, 1) 表示。GDI+ 在进行颜色变换时使用以 1 表示最大亮度的惯例。
可通过用 4×4 矩阵乘以这些颜色矢量将线性变换(旋转和缩放等)应用到颜色矢量中。但是,您不能使用 4×4 矩阵进行平移(非线性)。如果在每个颜色矢量中再添加一个虚拟的第 5 坐标(例如,数字 1),则可使用 5×5 矩阵应用任何组合形式的线性变换和平移。由线性变换组成的后跟平移的变换称为仿射变换。
说实话,不仅是刚开始接触ColorMatrix的时候,就是现在的我看到这段文字,都觉得有点玄,前3段很好理解,特别是后面那段,更是使那些初识GDI+的人觉得ColorMatrix深奥无比:ColorMatrix是怎样实现颜色的缩放、旋转、剪切及平移的?靠这些功能能实现图像的哪些效果?或者说,某种效果能用ColorMatrix实现吗?
下面,就让我们一步步揭开ColorMatrix的神秘面纱,我相信,当你看完这篇文章后,一定会说:哦,原来如此,这么简单!其实,这就是所谓“江湖一张纸,戳破不值一分钱”!很多看起来技术含量很高的东西,被人千方百计保密,申请专利,搞的神秘无比,其实一旦公开,就那么回事!
要揭秘ColorMatrix,就要解析它的缩放、旋转、剪切及平移功能是怎么实现的,为了方便叙述,我画了个ColorMatrix矩阵图贴在上面,在下面的表述中,大写ARGB表示颜色各分量现有的值,而小写argb表示运算后得到的新值。
Tags:GDI ColorMatrix 完全
编辑录入:爽爽 [复制链接] [打 印][]
赞助商链接