首页 > 其他分享 >as3 图像颜色渐变中使用matrix

as3 图像颜色渐变中使用matrix

时间:2023-05-21 19:04:56浏览次数:46  
标签:as3 matrix tx ty 渐变 var 100 rotation


graphics 对象也可以绘制渐变笔触和填充,而不是纯色笔触和填充。渐变笔触是使用 lineGradientStyle() 方法创建的;渐变填充是使用 beginGradientFill() 方法创建的。

 

这两种方法接受相同的参数。前四个参数是必需的,即类型、颜色、Alpha 以及比率。其余四个参数是可选的,但对于高级自定义非常有用。

 

第一个参数指定要创建的渐变类型。可接受的值是 GradientFill.LINEAR 或 GradientFill.RADIAL。

第二个参数指定要使用的颜色值的数组。在线性渐变中,将从左向右排列颜色。在放射状渐变中,将从内到外排列颜色。数组颜色的顺序表示在渐变中绘制颜色的顺序。

第三个参数指定前一个参数中相应颜色的 Alpha 透明度值。

第四个参数指定比率或每种颜色在渐变中的重要程度。可接受的值范围是 0-255。这些值并不表示任何宽度或高度,而是表示在渐变中的位置;0 表示渐变开始,255 表示渐变结束。比率数组必须按顺序增加,并且包含的条目数与第二个和第三个参数中指定的颜色和 Alpha 数组相同。

虽然第五个参数(转换矩阵)是可选的,但通常会使用该参数,因为它提供了一种简便且有效的方法来控制渐变外观。此参数接受 Matrix 实例。为渐变创建 Matrix 对象的最简单方法是使用 Matrix 类的 createGradientBox() 方法。

 

定义 Matrix 对象以用于渐变

可以使用 flash.display.Graphics 类的 beginGradientFill() 和 lineGradientStyle() 方法来定义在形状中使用的渐变。定义渐变时,需要提供一个矩阵作为这些方法的其中一个参数。

 

定义矩阵的最简单方法是使用 Matrix 类的 createGradientBox() 方法,该方法创建一个用于定义渐变的矩阵。可以使用传递给 createGradientBox() 方法的参数来定义渐变的缩放、旋转和位置。createGradientBox() 方法接受以下参数:

 

渐变框宽度:渐变扩展到的宽度(以像素为单位)

渐变框高度:渐变扩展到的高度(以像素为单位)

渐变框旋转:将应用于渐变的旋转角度(以弧度为单位)

水平平移:将渐变水平移动的距离(以像素为单位)

垂直平移:将渐变垂直移动的距离(以像素为单位)

例如,假设渐变具有以下特性:

 

GradientType.LINEAR

绿色和蓝色这两种颜色(ratios 数组设置为 [0, 255])

SpreadMethod.PAD

InterpolationMethod.LINEAR_RGB

下面的示例显示的是几种渐变,如图所示,它们的 createGradientBox() 方法的 rotation 参数不同,但所有其它设置是相同的:

 

 

 

width = 100;

height = 100;

rotation = 0;

tx = 0;

ty = 0;

width = 100;

height = 100;

rotation = Math.PI/4; // 45°

tx = 0;

ty = 0;

width = 100;

height = 100;

rotation = Math.PI/2; // 90°

tx = 0;

ty = 0;

 

 

下面的示例显示的是绿到蓝线性渐变的效果,如图所示,它们的 createGradientBox() 方法的 rotation、tx 和 ty 参数不同,但所有其它设置是相同的:

 

 

width = 50;

height = 100;

rotation = 0;

tx = 0;

ty = 0;

width = 50;

height = 100;

rotation = 0

tx = 50;

ty = 0;

width = 100;

height = 50;

rotation = Math.PI/2; // 90°

tx = 0;

ty = 0;

width = 100;

height = 50;

rotation = Math.PI/2; // 90°

tx = 0;

ty = 50;

 

 

createGradientBox() 方法的 width、height、tx 和 ty 参数也会影响“放射状”渐变填充的大小和位置,如下面的示例所示:

 

width = 50;

height = 100;

rotation = 0;

tx = 25;

ty = 0;

 

下面的代码生成了所示的最后一个放射状渐变:

 

import flash.display.Shape;
import flash.display.GradientType;
[NextPage]
import flash.geom.Matrix;
 
var type:String = GradientType.RADIAL;
var colors:Array = [0x00FF00, 0x000088];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var spreadMethod:String = SpreadMethod.PAD;
var interp:String = InterpolationMethod.LINEAR_RGB;
var focalPtRatio:Number = 0;
 
var matrix:Matrix = new Matrix();
var boxWidth:Number = 50;
var boxHeight:Number = 100;
var boxRotation:Number = Math.PI/2; // 90°
var tx:Number = 25;
var ty:Number = 0;
matrix.createGradientBox(boxWidth, boxHeight, boxRotation, tx, ty);
 
var square:Shape = new Shape;
square.graphics.beginGradientFill(type, 
                            colors,
                            alphas,
                            ratios,

标签:as3,matrix,tx,ty,渐变,var,100,rotation
From: https://blog.51cto.com/u_4387387/6320007

相关文章

  • echarts环形图渐变色和鼠标悬停样式
    计算后的渐变方向如图所示 <divclass="echarts"id="echat"ref="echat"></div>legendData:['小于1h','1~6h','6~24h','24h以上']total:733getData(){constcos=Math.cos;c......
  • 【Echarts】渐变色实现方式
    实现方式一:color:{type:'linear',//颜色渐变函数前四个参数分别表示四个位置依次为左、下、右、上x:1,y:1,x2:0,y2:0,colorStops:[{offset:0,color:'#00FF6......
  • ps修改图片内容渐变
    ps修改图片文字1.打开图片复制图层2.用选框工具框中需要修改的文字,右击鼠标,在选项框中选择填充,在弹出的窗口中,选中颜色或者是内容识别都是可以的,这里我选择的是颜色,点击颜色,然后在弹出的拾色器中选择颜色,也可以直接把鼠标放在画面中,点击一下我们需要的颜色的地方,颜色也就出来3......
  • 解读TaskMatrix.AI
    ChatGPT在广泛的开放域任务上展现出令人瞩目的强大对话、上下文学习和代码生成能力,而且它所获得的常识知识还可以为特定领域的任务生成高级解决方案概要。不过,除了更强大的学习、理解和生成能力,ChatGPT还有哪些问题需要解决呢?微软最近发布了TaskMatrix.AI,可能是人工智能生态系统......
  • css 背景色渐变 line-gradient
    background-image:linear-gradient(-55deg,#07265d,#0d3d92),linear-gradient(#2d323b,#2d323b);......
  • sklearn.metrics.confusion_matrix—计算混淆矩阵来评估分类的准确性
    在分类模型的性能评估指标总结中,已讲过混淆矩阵形式,接下来将介绍如何通过sklearn库中的confusion_matrix函数快速获得混淆矩阵。语法格式sklearn.metrics.confusion_matrix(y_true, y_pred, *, labels=None, sample_weight=None, normalize=None)参数解释:y_true:真实标......
  • [ABC276Ex] Construct a Matrix
    没有题解,所以来写一篇。Description构造一个\(N\timesN\)的矩阵\(A\),其中\(A_{i,j}\in{0,1,2}\),要求同时满足\(Q\)条限制。每条限制形如:给定\(a,b,c,d,e\),要求\(A\)满足\(\prod\limits_{i=a}^b\prod\limits_{j=c}^dA_{i,j}\equive\pmod3\)。Solution为贴合原......
  • TextView显示文字过长时添加阴影渐变消失效果
    TextView上显示的文字超过其最长限制的时候,要如何实现以下效果:values/styles.xml<stylename="AudioFileInfoOverlayText"><itemname="android:paddingLeft">4px</item><itemname="android:paddingBottom"......
  • Vulnhub靶机笔记2——matrix-breakout-2-morpheus
    一、介绍一个以《黑客帝国》为背景的靶场涉及内容主机发现端口服务扫描1.2不用工具实现ffuf目录爆破一句话木马反弹shellmsf,蚁剑使用图片隐写CVE-2022-0847漏洞利用二、环境攻击机:kali靶机:matrix-breakout-2-morpheus三、过程1、信息收集1.1主机存活扫描nma......
  • 张量(Tensor)、标量(scalar)、向量(vector)、矩阵(matrix)
    张量(Tensor):Tensor=multi-dimensionalarrayofnumbers张量是一个多维数组,它是标量,向量,矩阵的高维扩展,是一个数据容器,张量是矩阵向任意维度的推广注意,张量的维度(dimension)通常叫作轴(axis),张量轴的个数也叫作阶(rank)]标量(scalar):只有一个数字的张量叫标量(也叫标量张量、零维......