`
wesleysong
  • 浏览: 21871 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

用as做渐变填充

阅读更多
一直没好好研究过如何用AS设置渐变型填充。周日终于有些时间可以好好研究一下了。

在AS中,设置渐变填充的函数原型为:
flash.display.Graphics.beginGradientFill(
type:String, 
colors:Array,
alphas:Array,
ratios:Array,
matrix:Matrix = null,
spreadMethod:String = "pad",
interpolationMethod:String = "rgb",
focalPointRatio:Number = 0
):void


下面分析各个参数的意义:

type:String — A value from the GradientType class that specifies which gradient type to use: GradientType.LINEAR or GradientType.RADIAL.
渐变类型,值为GradientType.LINEAR(线性)或者GradientType.RADIAL(放射)

colors:Array — An array of RGB hexadecimal color values to be used in the gradient; for example, red is 0xFF0000, blue is 0x0000FF, and so on. You can specify up to 15 colors. For each color, be sure you specify a corresponding value in the alphas and ratios parameters.
颜色数组, 数组的每个元素都是一个RGB值,最多指定15种颜色。

alphas:Array — An array of alpha values for the corresponding colors in the colors array; valid values are 0 to 1. If the value is less than 0, the default is 0. If the value is greater than 1, the default is 1.
alpha数组,存放每种颜色的alpha值,与颜色数组中每个元素一一对应,值小于0则置0,值大于1则置为1

ratios:Array — An array of color distribution ratios; valid values are 0 to 255. This value defines the percentage of the width where the color is sampled at 100%. The value 0 represents the left-hand position in the gradient box, and 255 represents the right-hand position in the gradient box.

ratio数组,存放每种颜色为100%时所处的位置,0代表渐变box中最左侧部位,255代表最右侧部位。数组必须严格递增

其实colors、alphas和ratios这三个数组就代表着Flash CS中颜色面板里的渐变设置,如下图所示



colors代表的是每个小方格所在位置的颜色,alphas代表每个颜色的不透明度,而ratios则代表着每个小方格的位置

matrix:Matrix (default = null) — A transformation matrix as defined by the flash.geom.Matrix class. The flash.geom.Matrix class includes a createGradientBox() method, which lets you conveniently set up the matrix for use with the beginGradientFill() method.

转化矩阵,一般使用flash.geom.Matrix.createGradientBox()来建立此矩阵

spreadMethod:String (default = "pad") — A value from the SpreadMethod class that specifies which spread method to use, either: SpreadMethod.PAD, SpreadMethod.REFLECT, or SpreadMethod.REPEAT.

扩展方式,可选项为 SpreadMethod.PAD(平铺), SpreadMethod.REFLECT(反射), or SpreadMethod.REPEAT(重复).

interpolationMethod:String (default = "rgb") — A value from the InterpolationMethod class that specifies which value to use: InterpolationMethod.linearRGB or InterpolationMethod.RGB

插入方式(额,好邪恶=。=),可选项为InterpolationMethod.linearRGB(线性RGB)和InterpolationMethod.RGB(RGB)

focalPointRatio:Number (default = 0) — A number that controls the location of the focal point of the gradient. 0 means that the focal point is in the center. 1 means that the focal point is at one border of the gradient circle. -1 means that the focal point is at the other border of the gradient circle. A value less than -1 or greater than 1 is rounded to -1 or 1. For example, the following example shows a focalPointRatio set to 0.75:

渐变焦点位置,默认值为0(在中心),-1意味着在渐变圆的一端,1意味着另外一端。

下面重点来看一下flash.geom.Matrix.createGradientBox()这个函数
它的原型是:
public createGradientBox(
width:Number,
height:Number,
[rotation:Number],
[tx:Number],
[ty:Number]
) : Void

分析各个参数:
width:Number - The width of the gradient box.
height:Number - The height of the gradient box.
Gradient box的长宽,没啥好说的
rotation:Number [optional] - The amount to rotate, in radians. The default value is 0.
Gradient box的旋转角,注意这里应该以弧度为单位
tx:Number [optional] - The distance in pixels to translate to the right along the x axis. This value will be offset by half of the width parameter. The default value is 0.
ty:Number [optional] - The distance in pixels to translate down along the y axis. This value will be offset by half of the height parameter. The default value is 0.
x轴和y轴的偏移量

于是,下边这段代码就可以画出来一个渐变的天空颜色呢:)
			var fillType:String = GradientType.LINEAR;
			var colors:Array = [0x06B0F9, 0xFFFFFF];
			var alphas:Array = [1, 1];
			var ratios:Array = [0x00, 0xFF];
			var matr:Matrix = new Matrix();
			matr.createGradientBox(800, 600, Math.PI/2,0,0);
			var spreadMethod:String = SpreadMethod.PAD;
			
			var backGround:Shape = new Shape();
			backGround.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod);  
			backGround.graphics.drawRect(0,0,800,600);
			backGround.graphics.endFill();
			addChild(backGround);


效果图:



  • 大小: 793 Bytes
  • 大小: 5.1 KB
分享到:
评论

相关推荐

    VB颜色渐变填充

    4. **绘图**:有了GradientBrush对象后,可以使用Graphics对象的`FillRectangle()`、`FillPolygon()`等方法将渐变填充应用于图形。例如,`g.FillRectangle(brush, rectangle)`,其中`g`是Graphics对象,`brush`是...

    Vb编程实现填充渐变色.7z

    4. **填充区域**: 使用`Graphics`对象的`FillRectangle`方法,我们可以将渐变色应用到指定的矩形区域: ```vb g.FillRectangle(brush, 0, 0, Width, Height) ``` 5. **释放资源**: 绘制完成后,记得释放`...

    vb GDI+ 多颜色渐变画刷填充图形

    在设置好画刷后,就可以使用`Graphics`对象的`FillRectangle`或其他填充方法来绘制渐变填充的图形。例如: ```vb Dim g As Graphics = e.Graphics ' 假设e是PaintEventArgs g.FillRectangle(brush, 0, 0, 100, 100)...

    VB 颜色的渐变实例

    Dim steps As Integer = 100 ' 渐变的步骤数量 For i As Integer = 0 To steps - 1 Dim t As Double = i / (steps - 1.0) ' 计算当前颜色的比例 Dim currentColor As Color = LerpColor(startColor, endColor, ...

    vb背景渐变色

    3. **绘制渐变背景**:有了渐变刷后,我们可以用它来填充窗体或控件的背景。调用Graphics对象的FillRectangle方法,传入渐变刷和要填充的矩形区域。 以下是一个简单的VB代码示例,展示如何创建一个从红色渐变到蓝色...

    VB程序显示不同填充颜色及填充效果的圆

    1. **渐变填充**:使用`LinearGradientBrush`或`RadialGradientBrush`,可以创建从一种颜色渐变到另一种颜色的效果。 2. **图案填充**:使用`PatternBrush`,可以使用位图或纹理作为填充模式。 3. **透明度变化**:...

    vb实现窗口背景渐变色

    最后,使用渐变刷填充窗体的ClientRectangle区域。 如果你想要实现动态改变颜色或者更复杂的渐变效果,可以添加更多的颜色停止点,或者在窗体的其他事件(如MouseMove或Timer事件)中更新渐变参数并重新绘制窗体。 ...

    窗体渐变Vb的简单方法

    然后,使用`GradientFill`函数填充这个矩形,以实现渐变效果。 5. **调用API函数**:在窗体的`Paint`事件或自定义画布上,调用`GradientFill`函数,传递必要的参数,如设备上下文句柄(`hdc`)、渐变的起点和终点...

    Flash绘图-AS3 Drawing API.pdf

    5. **使用渐变填充**:通过`beginGradientFill()` 方法来定义渐变填充。 6. **定义矩阵创建渐变**:使用`Matrix` 对象来定义渐变的方向和大小。 7. **使用三角函数绘图**:利用三角函数来计算曲线或圆的坐标点,从而...

    vb6画渐变色条源代码

    - **绘制矩形**: 设置画布上的矩形区域,即色条的位置和大小,然后用填充刷子填充该矩形。 - **更新窗口**: 最后,调用Form的Invalidate方法强制重绘,使用户看到渐变色条。 3. **代码示例** 假设我们有以下VB6...

    VB语言如何实现背景渐变

    首先,需要获取控件的`Graphics`对象,例如窗体的`Form1(Graphics)`,然后使用`FillRectangle`方法填充渐变色。 3. **创建渐变刷**: 渐变需要一个特殊的画刷——`LinearGradientBrush`。这个刷子允许我们定义起始...

    html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法

    在这个教程的第四部分,我们将探讨未闭合路径的填充方法以及如何使用渐变色填充图形。 首先,填充图形是通过 `fill()` 方法实现的,这与 `strokeStyle` 用于设置描边样式类似,`fillStyle` 属性则用于设置填充样式...

    vb生成渐变色.rar

    这个类允许我们定义一个线性渐变,其中包含两个或更多的颜色,并且可以在指定的方向上进行填充。 首先,你需要创建一个`LinearGradientBrush`对象,传入起始点和结束点,以及渐变的颜色数组。颜色数组至少需要两种...

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

    4. **绘制背景**:使用Graphics对象的FillRectangle方法,用创建好的渐变刷填充窗体背景。 ```vb g.FillRectangle(brush, Me.ClientRectangle) ``` 5. **处理窗口大小变化**:当窗体大小发生变化时,需要重新绘制...

    渐变文字颜色

    这将使用渐变刷来填充文本的颜色。 以下是一个简单的VB代码示例,展示了如何创建一个从红色渐变到蓝色的文本: ```vb Imports System.Drawing Imports System.Drawing.Drawing2D Public Class Form1 Private Sub...

    python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)

    - `cv2.BORDER_CONSTANT`:使用常数值填充,可以通过`value`参数指定颜色。 - `cv2.BORDER_REPLICATE`:边界像素复制到边框。 - `cv2.BORDER_REFLECT`:边界像素镜像反射。 - `cv2.BORDER_WRAP`:边界像素循环...

    VB 渐变色的窗体界面

    ' 使用渐变刷填充窗体背景 g.FillRectangle gradientBrush, 0, 0, Me.Width, Me.Height ' 清理资源 Set gradientBrush = Nothing End Sub ``` 这段代码创建了一个线性渐变,从左上角的`startColor`到右下角的`...

    VB 图形的填充的实例

    此外,`SolidBrush`对象还可以设置不同的填充模式,如渐变填充、图案填充等,通过更改其构造函数的参数或使用`Brush`类的其他方法。 在实际编程中,可能需要结合事件处理程序,比如`Paint`事件,以便在控件每次重绘...

    iOS SwiftUI 颜色渐变填充效果的实现

    SwiftUI 为我们提供了各种梯度选项,所有这些选项都可以通过多种方式使用。 Gradient 渐变器 A color gradient represented as an array of color stops, each having a parametric location value. gradient是一组...

    Flash3D线条与填充

    填充可以理解为给3D对象内部涂色的过程,包括平面填充、渐变填充和位图填充等。在Flash中,你可以使用ActionScript(AS)来控制填充的方式,比如设置颜色、透明度、渐变方向或使用自定义的纹理。这对于创建具有真实...

Global site tag (gtag.js) - Google Analytics