`
liugang594
  • 浏览: 977889 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

渐变色原理

阅读更多

[引用][http://www.islandcn.com/post/311.html]

 

在图象图形的编程中, 经常会见到渐变色以及各种图片的叠加等效果. 这篇文章就是要对这些效果的原理加以分析, 并在Elastos© 操作系统 Mobile Edition SDK上和Windows 200 Professional上使用Visual C++ 6.0 编程实现.
一. RGB三维模型与渐变色的原理及实现
 1. RGB三维模型

作为计算机图形学中重要的原色混合系统, RGB(红绿蓝)加色系统广泛应用于发光体, 如彩色CRT显示或彩色灯光. 这三种单色是得以匹配或生成可见光谱中几乎所有颜色的最小数量的原色.
为了适应不同的颜色深度, 使用0-1来表示R, G, B颜色深浅. 使用三维坐标分别表示RGB. 如下图1所示. 这样原点RGB(0, 0, 0)就表示黑色, 而原点对应的顶点RGB(1, 1, 1)就表示白色. 使用三维表示的好处就在于直观, 以及在颜色变化过程中容易得到颜色变化的规律.

 

实现渐变色与图像叠加效果

实现渐变色与图像叠加效果

 

(图1)
在图1所表示的空间中(点表示为 (R, G, B), 0≤R≤1, 0≤G≤1,0≤B≤1). 现在假设有某颜色(比如图1中的点Q), 其值为(r, g, b). 那么从黑色到该颜色的点(在图1中就对应从点(0,0,0)到点Q(r, g, b)的线段)从视觉上是越来越浅. 设这些点的坐标为(x, y, z)(0≤x≤r, 0≤y≤≤g, 0≤z≤b), 那么在我们的RGB三维坐标空间中就有方程:

 

公式1

公式1

 

(公式1)
(注意: 这里处理的点都是三维模型所表示的立体内的点, 其中边界情况请读者自行考虑)
从该点到白色的点(在图1中就对应从点Q(r, g, b)到点(1, 1, 1)的线段)的颜色继续变浅. 设这些点的坐标为(x, y, z)(r≤x≤1, g≤y≤1, b≤z≤1), 那么这些点满足方程:

 

公式2

公式2

 

(公式2)
(注意: 同上, 这里处理的点都是三维模型所表示的立体内的点, 其中边界情况请读者自行考虑)

__________________________________________________________________________________

 

 

根据以上原理,要实现渐变色,只需要按照三维直接坐标变换过程着色即可。三维直线方程为:

 

(x-x1)/(x2-x1)=(y-y1)/(y2-y1)=(z-z1)/(z2-z1) 

其中,起始点为(x1,y1,z1),终止点为(x2,y2,z2),也就是对应于我们的起始颜色和结束颜色的RGB值。

 

取某一边为渐近过程,对应的算出另两条边的值,就可以组合出对应的某点的颜色。

 

例如,有起始颜色:(255,0,0)和结束颜色(0,255,0),按渐变过程,每个颜色画两条竖线得到的图如下:

gradient

 

启始颜色:(255,0,255)和结束颜色(0,255,255)得到的渐变图为:

gradient2

<!-- 导入 在此 参考资料--><!-- end 参考资料-->

 

  • 大小: 2.3 KB
  • 大小: 2.3 KB
分享到:
评论

相关推荐

    VC小程序,绘制渐变色图形

     VC小程序,绘制渐变色图形,在窗体的空白处绘制渐变色图形,通过参阅源代码你将了解到它的实现原理,并熟悉如何设置两点间的颜色,如何改变颜色域值,渐变交接处的长短等。本程序对于VC新手来说是相当有用的。

    填充渐变色的VC++窗体编辑框

    摘要:VC/C++源码,界面编程,... 填充渐变色的VC++窗体编辑框源代码,漂亮的VC编辑框,截图如上所示,而且当输入字符的时候,文字还带有阴影效果,像是立体文字,一定会给你的窗体增色不少,源代码实现原理分享给大家。

    VC 生成窗口工具栏渐变色效果.rar

    VC 生成窗口工具栏渐变色效果,类似于Windows 开始菜单弹出来的渐变效果,本代码中的渐变色你还可以试着改变一下,在其它地方生成这种渐变色窗口,其原理十分相似,你可参考下。

    iOS文字渐变色效果的实现方法

    照例先上文字渐变的效果图 实现思路如下 一、创建一个颜色渐变层,渐变图层跟文字控件一样大。 二、用文字图层裁剪渐变层,只保留文字部分,就会让渐变层...三、mask图层工作原理:  1.根据透明度进行裁剪,只保留非透

    Android实现渐变圆环、圆形进度条效果

    原理还是绘图,Canvas可以绘制的对象有:弧线(arcs)、填充颜色(argb和color)、 Bitmap、圆(circle和oval)、点(point)、线(line)、矩形(Rect)、图片(Picture)、圆角矩形 (RoundRect)、文本(text)、顶点(Vertices)、...

    CSS动态渐变色边框围绕内容区域旋转的效果(实例代码)

      在网上查阅相关资料后,发现目前的动态渐变色边框的实现方式大部分为使用伪元素比内容区域大一圈然后横向移动渐变色背景的方式实现,而没有渐变色边框围绕内容区域进行旋转的效果,于是我做了一个这样的demo供...

    CFGradientLabelDemo:实现文字渐变色的两种方法

    CFGradientLabelDemo实现文字渐变色的两种方法效果如下:其实这两种方法实现原理及思路是差不多的, 只是使用的类和方法不一样. (一)_ 自定义label, 实现 drawRect 方法, 在该方法里面画渐变色### 思路: 1)_ 把...

    matlab如何生成渐变颜色代码-iSSP2.4:iSSP2.4

    matlab如何生成渐变颜色代码 0 前言 该程序是基于MATLAB开发的一款用于震源谱参数和震源参数计算的工具,方便地震监测预报人员开展日常工作,以及辅助完成部分科研任务。该版本为Ver2.0,比Ver1.0版本更为简洁、稳定...

    ViewPageBackgroundChanged:实现ViewPage背景颜色随着滑动渐变

    实现ViewPage背景颜色随着滑动渐变 原理介绍: 对于两个颜色Color1,Color2,每个颜色有三个主要颜色通道red通道,green通道,blue通道; 如果这两个颜色作为前景色和背景色,前景色以透明度a显示,那么显示屏所得到的...

    Android ViewPager 平滑过渡实现手动循环和自动循环

    Android ViewPager 平滑过渡实现手动循环和自动循环,实现原理是设置最大值,不断+1,%图片的个数实现所谓的循环。虽然不是真正的无限循环(因为到理论的最大值时就会停止),但是足够用的了。效果比网上的真正无限...

    XCharts:XCharts 是一款支持缩放的柱状图、折线图与曲线图,支持个性化设置的曲线图

    支持渐变色填充折线/曲线 支持点击某一项后出现数值提示 (非pop形式)  DEBUG 模式对数值严格检查, 把错误拦截在开发时刻 更多.... 效果图 使用 导入工程 将 XCharts 全部拖入你的工程项目中; 引入 XCharts.h 头文件...

    h5-draw-map-colorfully:绘制彩色地图轨迹

    原理 本次用的方法比较笨, 主要是高德自带的API + H5的canvas. 轨迹的绘制 定位和自适应屏幕 高德自己有绘制轨迹的方法, 虽然只能是单色的, 但可以用它来进行定位和自适应屏幕 /** 使用高德地图自带的覆盖方法, 自动...

    TinyPNG PNG图片压缩利器

    图片尺寸大,或者色彩数量多特别是渐变色的多的时候,PNG的体积会明显大于JPG。 Android 的界面能用 PNG 最好是用 PNG 了,因为32位的PNG 颜色过渡平滑且支持透明。JPG是像素化压缩过的图片,质量已经下降了,要尽量...

    载入一张图片,并在上面加字,C#的代码

    内容索引:C#源码,图形图像,图形处理 载入一张图片,并在上面加字,通俗说,就是动态在图片上添加文字,这是由C#实现的源码实例,加载的文字暂时由程序指定位置,可选择文字是否单色或渐变色,不过单色和渐变色同样...

    Android代码-AMapCircleWave

    因为不能满足设计师的需求,而且不带渐变色,因此我决定用属性动画做了。 来张动态的效果图: 实现原理:添加了三个圆形,每个圆形一开始设置透明,每个圆形开始执行动画有个时间间隔,动态改变每个圆形半径及填充...

    介绍LED护栏管原理

    LED护栏管原理  LED护栏管是采用优质超高亮LED发光二极管组成,主要用于城市景观亮化作用。本产品具有耗电低(每米到10W)、低热量、寿命长、耐冲击、可靠性高、节能环保,光色柔和,亮度高等特点。颜色纯正、色彩...

    iOS实现简易的导航栏颜色渐变实例代码

    前言 很多App首页要做成类似...思考与原理 如何给导航栏设置颜色? //方法一 self.navigationController.navigationBar.backgroundColor = [UIColor redColor]; //方法二 [self.navigationController.navigationBa

    color-Color颜值小程序.zip

    5、渐变:渐变由指定的基准色通过变化一定比例的亮度或饱和度来得到。6、二次色配比:二次色之间都拥有一种共同的颜色,其中两种拥有相同的蓝色分量,两种拥有相同的绿色分量,两种拥有相同的红色分量。它们轻易能够...

Global site tag (gtag.js) - Google Analytics