有了 IGraphicsData 实例集合之后,便可使用 Graphics 类的
drawGraphicsData()
方法来呈现图形了。
drawGraphicsData()
方法将按顺序执行 IGraphicsData 实例矢量中的一组绘图指令:
// stroke object
var stroke:GraphicsStroke = new GraphicsStroke(3);
stroke.joints = JointStyle.MITER;
stroke.fill = new GraphicsSolidFill(0x102020);// solid stroke
// fill object
var fill:GraphicsGradientFill = new GraphicsGradientFill();
fill.colors = [0x0000FF, 0xEEFFEE];
fill.matrix = new Matrix();
fill.matrix.createGradientBox(70, 70, Math.PI/2);
// path object
var path:GraphicsPath = new GraphicsPath(new Vector.<int>(), new Vector.<Number>());
path.commands.push(GraphicsPathCommand.MOVE_TO, GraphicsPathCommand.LINE_TO, GraphicsPathCommand.LINE_TO);
path.data.push(125,0, 50,100, 175,0);
// combine objects for complete drawing
var drawing:Vector.<IGraphicsData> = new Vector.<IGraphicsData>();
drawing.push(stroke, fill, path);
// draw the drawing
graphics.drawGraphicsData(drawing);
通过修改示例中绘制所用路径的一个值,可以多次重绘形状,以生成更复杂的图像:
// draw the drawing multiple times
// change one value to modify each variation
graphics.drawGraphicsData(drawing);
path.data[2] += 200;
graphics.drawGraphicsData(drawing);
path.data[2] -= 150;
graphics.drawGraphicsData(drawing);
path.data[2] += 100;
graphics.drawGraphicsData(drawing);
path.data[2] -= 50;graphicsS.drawGraphicsData(drawing);
尽管 IGraphicsData 对象可以定义填充和笔触样式,但这两种样式并不是必需的。换句话说,可以在使用 IGraphicsData 对象绘制已保存路径集合的同时,使用 Graphics 类方法设置样式,反之亦然。
注:
开始新的绘制之前,请使用
Graphics.clear()
方法清除以前的绘制;除非如上例所示,要在原始绘制的基础上继续绘制。在更改路径或 IGraphicsData 对象集合的某个部分时,请重绘整个绘制来查看所做的更改。
使用图形数据类时,只要绘制了三点或更多点,就会呈示填充,这是因为形状实际上在该点闭合。即使填充闭合,笔触也不会闭合;这一行为与使用多个
Graphics.lineTo()
或
Graphics.moveTo()
命令时不同。