拼吾爱程序人生

首页 » .Net编程 » C# » C#数字图像探索系列(1)--伪渐变效果原理及应用初级篇
cobra - 2008-8-11 0:18:00


引用:
//伪渐变原理的关键问题是:
  起始颜色(比如:#efefef)渐变到结束颜色(比如:#344567),那么中间的颜色的值(rgb值,html值都可以)如何计算?

我想弄懂了这个问题,渐变问题也就迎刃而解拉。经过几次的观察尝试摸索,总结了下面的这个伪渐变原理:


引用:
  伪原理: 
  颜色一般由三色部分组成(暂且不讨论alpha透明度),red,green,blue(rgb色彩原理)
              Color c=Color.FromArgb(255,0,134)
  上面的值中255就是红色值,0就是绿色值,134就是蓝色值,改变他们,就改变了颜色.
  但是,渐变是如何规律的改变这三个值的?(关键!),具体点,
              Color c1=Color.FromArgb(255,255,255);
              Color c2=Color.FromArgb(0,0,0);
  由c1渐变到c2的中间颜色是多少呢?
  提取原理分析:
        假如渐变长度为256个像素,第一个像素点颜色值为(0,0,0),最后一个像素点颜色值为(255,255,255),经观察发现,中间渐变像素点很有规律:从(1,1,1)->(2,2,2)->(3,3,3)...(254,254,254)->(255,255,255)呈现各分量分别递变(递增,递减)!换另外两种颜色,也是符合上面的分析,只是各分量的递变间隔不一定相同(有的慢有的快)。
  结果:
        颜色渐变就是源rgb三色对应朝着目标rgb三色按各自一定间隔递变!


现在,我们已经弄清楚了伪渐变原理,就用c#编程试试效果吧(截图有点闪烁,效果不好,但是真正的图片效果好)!

 附件: 您所在的用户组无法下载或查看附件 

生成的真正的图片效果:


 附件: 您所在的用户组无法下载或查看附件

后台核心代码(预览):

Code


辅助函数ConvertHtmlToRgb():

Code


辅助函数SixteenCharMapToTen():

Code


注意一点:

  1.可能有的朋友对ConvertHtmlToRgb()不大理解,其实就是#aabbcc=>{170,187,204}的过程,aa表示红色R的值,转化为十进制的170,其他两色类似.
  2.用像素绘制图片,效率非常之低,我会在后面改进.
  今天我们算是开了个头,伪渐变原理应该讲清楚拉,关于渐变的其他形式以及alpha透明度的探索,丰富多采,我会

在后续篇章中和大家一起分享,欢迎排砖!


(文/qianxudetianxia  出处/博客园)

 您可能对 [C#] 的这些文章也感兴趣:

论C#变得越来越臃肿是不可避免的
查询IP所在区段(C#)
在C#中利用SharpZipLib进行文件的压缩和解压缩
C# - Append a host header by code in IIS
在C#中调用Microsoft.VisualBasic命名空间下的类型验证函数
使用泛型实现单例提供者(原创翻译)
C#2 anonymous methods
Master Pages: Tips, Tricks, and Traps
Microsoft .NET 框架资源基础
基于.Net平台应用程序唯一运行实例实现
.net Framework 2.0 专门提供了配置文件的操作
正确实现 IDisposable
1
查看完整版本: C#数字图像探索系列(1)--伪渐变效果原理及应用初级篇
Modify by pin5i DZNT_ExpandPackage 2.1.3296 2007-2009 pin5i.com
 Total Unique Visitors: