`
蒙太奇
  • 浏览: 52199 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

好久没有更新Blog了,献上一个as3的颜色渐变算法

    博客分类:
  • as3
阅读更多
转载请注明出处:http://montage.iteye.com/blog/446514
最近在需要一个颜色渐变的算法,比如从黑色(0x000000) 到 白色 (0xFFFFFF) 的渐变;
再有一个步长参数, 步长如果为10的话,那么这个算法就应该返回一个长度为10的数组,数组内容分是从黑到白渐变的颜色值;找了半天终于找到了一个java版的,非常符合我的需求,照着写了个as3的,测试过了,一切OK;给大家共享一下,支持开源!
/**
			 * 输入一个颜色,将它拆成三个部分:
        	 * 红色,绿色和蓝色
			 */
			public static function retrieveRGBComponent( color:uint ):Array
			{
				var r:Number = color >> 16;
				var g:Number = (color >> 8) & 0xff;
				var b:Number = color & 0xff;
				
				return [r, g, b];
			}
			
			/**
			 * 红色,绿色和蓝色三色组合
			 */
			public static function generateFromRGBComponent( rgb:Array ):int
			{
				if( rgb == null || rgb.length != 3 || 
					rgb[0] < 0 || rgb[0] > 255 ||
					rgb[1] < 0 || rgb[1] > 255 ||
					rgb[2] < 0 || rgb[2] > 255 )
					return 0xFFFFFF;
				return rgb[0] << 16 | rgb[1] << 8 | rgb[2];
			}
			
			/**
			 * color1是浅色,color2是深色,实现渐变
        	 * steps是指在多大的区域中渐变,
			 */
			public static function generateTransitionalColor( color1:uint, color2:uint, steps:int):Array
			{
				if( steps < 3 )
					return [];
					
				var color1RGB:Array = retrieveRGBComponent( color1 );
				var color2RGB:Array = retrieveRGBComponent( color2 );
				
				var colors:Array = [];
				colors.push( color1 );
				steps = steps - 2;
				
				var redDiff:Number = color2RGB[0] - color1RGB[0];
				var greenDiff:Number = color2RGB[1] - color1RGB[1];
				var blueDiff:Number = color2RGB[2] - color1RGB[2];
				for( var i:int = 1; i < steps - 1; i++)
				{
					var tmpRGB:Array = [
						color1RGB[0] + redDiff * i / steps,
						color1RGB[1] + greenDiff * i / steps,
						color1RGB[2] + blueDiff * i / steps
					];
					colors.push( generateFromRGBComponent( tmpRGB ) );
				}
				colors.push( color2 );
				
				return colors;
			}

效果如图:
  • 描述: 效果图
  • 大小: 11.5 KB
0
0
分享到:
评论
1 楼 jinxueliu 2010-05-04  
我有一个问题,不知您能否指点一二

比如说有一张人脸照片,
画一个大的矩形框住鼻子的区域,在大矩形内画一个小矩形,
使大矩形内的图像缩小变形为小矩形的大小。
现在的问题是:大矩形和小矩形之间的区域,如何填充它,使之有一个平滑渐变的过程。

相关推荐

    VB 颜色的渐变实例

    在VB(Visual Basic)编程中,颜色渐变是一种常见的视觉效果,可以用于界面设计或图形绘制,提升用户体验。本文将详细讲解如何在VB中实现颜色的渐变效果,并通过一个实例来具体阐述。 颜色渐变通常指的是从一种颜色...

    纯AS3图片切换效果-包括渐变,电视墙,滴水融化,百叶窗,拉滑块,划入。.rar

    标题中的“纯AS3图片切换效果-包括渐变,电视墙,滴水融化,百叶窗,拉滑块,划入”指的是使用ActionScript 3(AS3)编程语言实现的一种动态图片展示技术。AS3是Adobe Flash Professional和Flex Builder等开发工具的...

    javascript实现颜色渐变的方法

    颜色渐变通常涉及到RGB色彩模式,即红色(Red)、绿色(Green)和蓝色(Blue)三个通道的数值变化。当我们要从一个颜色平滑过渡到另一个颜色时,就需要对每个通道的数值进行线性插值计算。这里以颜色RGB(200,50,0)...

    As3 开源图片特效类

    【As3 开源图片特效类】是一个专门为ActionScript 3(AS3)开发的图片处理库,它提供了丰富的图片特效功能。AS3是Adobe Flash Platform的主要编程语言,广泛应用于创建互动性内容、游戏以及富互联网应用程序(RIA)...

    AS3 火焰特效

    总的来说,"AS3 火焰特效"是一个涉及到图形编程、动画控制、数学算法以及用户体验等多个方面的项目。学习和掌握这些技术不仅可以提升你在Flash开发中的专业技能,也能为其他图形渲染和动态效果的实现打下基础。

    AS3 让一张图片变成火焰特效的代码

    AS3中没有内置的火焰特效库,所以我们需要手动实现这些算法。 一种常见的火焰生成技术是使用粒子系统。粒子系统模拟了大量小型元素的行为,如火花、烟雾或水滴。在AS3中,我们可以创建一个自定义的粒子类,并在`...

    AS3制作的绚丽烟花雨效果

    在本项目中,"AS3制作的绚丽烟花雨效果"是一个使用ActionScript 3.0编程语言创建的视觉特效。ActionScript是Adobe Flash Platform的主要脚本语言,它为动画、游戏和其他互动内容提供了强大的功能。这个烟花雨效果是...

    flash as3 粒子教程

    通过继承这个基础类,可以轻松地扩展出不同类型的粒子,比如带有颜色渐变的粒子或者具有特殊运动轨迹的粒子。 #### 知识点三:粒子系统的应用场景 - **多样的粒子效果**:利用简单的调整和变化,就可以创造出多种...

    swift-过渡色背景渐变View

    线性渐变是颜色在二维空间中从一个方向平滑过渡到另一个方向的变化。在Swift中,我们可以使用`CAGradientLayer`来创建线性渐变效果。`CAGradientLayer`是Core Animation框架的一部分,它可以被添加到视图的层(`...

    VB6.0在窗口中实现背景渐变.rar

    以上只是一个基础的示例,实际的渐变效果可能需要更复杂的代码来实现平滑过渡,例如使用多个颜色点定义渐变,或者通过算法动态计算颜色变化。在提供的压缩包中,可能包含了一个完整的VB6.0工程,包括了实现这一功能...

    flash AS3 水墨源代码

    2. **颜色混合**:AS3支持颜色矩阵滤镜,可以用于实现复杂的颜色混合效果,比如在水墨扩散时颜色的渐变和交融。 3. **事件监听**:通过`addEventListener()`方法监听鼠标事件,如`MOUSE_DOWN`和`MOUSE_MOVE`,根据...

    shuimo.rar_as3_flex_ink_水墨

    【标题】"shuimo.rar_as3_flex_ink_水墨" 提供的是一个使用ActionScript 3(AS3)编程语言实现的Flex应用程序,该程序着重于创建水墨画效果。Flex是Adobe开发的一个开放源代码框架,主要用于构建富互联网应用(RIA)...

    SetPixel_o.rar_ vb setpixel_SETPIX_setpixel_vb中实现图像特效显示_渐变

    在VB(Visual Basic)编程环境中,`SetPixel`函数是一个非常重要的图形操作工具,用于在位图上设置单个像素的颜色。本压缩包文件“SetPixel_o.rar”包含了一组VB源码,专注于通过`SetPixel`实现图像的各种渐变效果。...

    JS Tween 颜色渐变

    JSTween颜色渐变是基于作者早期编写的as Tween库进行了改写,保留了基础的颜色渐变功能,但并未包括扩展的接口,如alpha2、move2、size2、color2等。JSTween提供了31种缓动算法,并能够自动转换颜色格式,实现了从...

    javascript计算渐变颜色的实例

    有时候,一个表格或者一片区域内,需要若干同色系从浅到深的颜色,如图所示:  如果需要的颜色少,则颜色的差异较大,需要的颜色多,则颜色差异小,如下图:   这时,就用到了同色系渐变颜色的计算,算法如下...

    用vb画颜色变化同心圆

    为了实现颜色渐变,我们可以定义一个颜色数组,然后按照一定的规律(如线性或指数变化)在数组中遍历颜色,每次绘制同心圆时使用当前颜色。 数学运算在这里扮演了关键角色。要画出同心圆,我们需要计算每个圆的半径...

    AS2高级绘图工具类下载

    3. **渐变与纹理**:掌握如何使用`beginGradientFill()`和`beginBitmapFill()`方法创建线性渐变、径向渐变或应用位图填充,以增加图形的视觉深度和复杂性。 4. **颜色操作**:了解如何通过调整颜色模式、透明度和...

    flash祖玛游戏源代码

    此外,透明度、颜色渐变等视觉效果也是通过AS脚本来控制。 七、优化与性能 对于大型游戏,性能优化至关重要。优化可能包括减少不必要的计算、合理使用数据结构、避免内存泄漏等。在祖玛游戏中,合理的缓存策略、...

    面状图层动态渲染程序

    根据给定的信息,我们...从初始化渲染器、选择分类算法到设置颜色渐变,再到实际应用渲染规则,整个过程逻辑清晰、步骤完整。这种技术在GIS领域有着广泛的应用前景,特别是在需要实时反映数据变化的场景下尤为重要。

Global site tag (gtag.js) - Google Analytics