<?xml version="1.0" encoding="utf-8"?>
<s:Application
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/halo"
minWidth="1024"
minHeight="768"
xmlns:mx1="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import
flash.geom.Matrix;
/*
画图形之前必要调用的函数(其中之一即可):
linestyle()、beginFill()、lineGradientStyle()、beginGradientFill()、beginBitmapFill()方法来设置线条样式和/或填充。
*/
//画矩形
private function rect(rectX:Number, rectY:Number,
rectWidth:Number,
rectHeight:Number):void{
rectBoxID.graphics.clear();
if(radioLineID.selected){
//线性
rectBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false,
LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
}else
if(radioGradientID.selected){ //渐变
var matr:Matrix = new
Matrix();
matr.createGradientBox(20, 20, 0, 0, 0);
//the last
parameter can selete three type: SpreadMethod.PAD or SpreadMethod.REFLECT or
SpreadMethod.REPEAT.
rectBoxID.graphics.beginGradientFill(GradientType.LINEAR,
[0xFF0000, 0x00FF00], [1, 1], [0x00, 0xFF], matr,
SpreadMethod.REPEAT);
}else if(radioFullID.selected){
//填充
rectBoxID.graphics.beginFill(0xFF0000,
1.0);
}
rectBoxID.graphics.drawRect(rectX, rectY, rectWidth,
rectHeight);
//
}
//画圆角矩形
private function
circleRect(cRectX:Number, cRectY:Number, cRectWidth:Number, cRectHeight:Number,
cRectDU:Number):void{
cRectBoxID.graphics.clear();
if(radioLineID.selected){
//线性
cRectBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false,
LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
}else
if(radioGradientID.selected){ //渐变
//the last parameter can selete three
type: SpreadMethod.PAD or SpreadMethod.REFLECT or
SpreadMethod.REPEAT.
cRectBoxID.graphics.beginGradientFill(GradientType.LINEAR,
[0xFF0000, 0x0000FF], [1, 0.1], [0, 255], new Matrix(),
SpreadMethod.PAD);
rectBoxID.graphics.endFill();
}else
if(radioFullID.selected){ //填充
cRectBoxID.graphics.beginFill(0xFF0000,
1.0);
}
cRectBoxID.graphics.drawRoundRect(cRectX, cRectY,
cRectWidth, cRectHeight, cRectDU);
}
//画直线
private function
line(lineX:Number, lineY:Number):void{
//两个参数都表示从起始的位置坐标x、y相加这两个参数后值就是结束的x、y值
lineBoxID.graphics.clear();
if(radioLineID.selected){
//线性
lineBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false,
LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
}else
if(radioGradientID.selected){ //渐变
lineBoxID.graphics.lineStyle(20,
0xFF0000, 1.0, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER,
100);
lineBoxID.graphics.lineGradientStyle(GradientType.LINEAR,
[0xFF0000, 0x0000FF], [1, 0.5], [0, 255], new Matrix(),
SpreadMethod.PAD);
}else if(radioFullID.selected){
//(填充)直线不存在填充的,呵呵
lineBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false,
LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER,
100);
}
lineBoxID.graphics.lineTo(lineX,
lineY);
}
//画曲线
private function cLine(endX:Number,
endY:Number):void{
cLineBoxID.graphics.clear();
if(radioLineID.selected){
//线性
cLineBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false,
LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
}else
if(radioGradientID.selected){ //渐变
var matr:Matrix = new
Matrix();
matr.createGradientBox(20, 20, 0, 0,
0);
cLineBoxID.graphics.beginGradientFill(GradientType.LINEAR,
[0xFF0000, 0x00FF00, 0xFF0000], [0.2, 1, 1], [0, 128, 255], matr,
SpreadMethod.REFLECT);
}else if(radioFullID.selected){
//填充
cLineBoxID.graphics.beginFill(0xFF0000);
}
cLineBoxID.graphics.curveTo(100,
80, endX, endY);
//前两个参数表示弧度的偏移量,后两个参数表示结束点的x、y坐标
}
//画圆
private function
circle(oX:Number, oY:Number,
radius:Number):void{
circleBoxID.graphics.clear();
if(radioLineID.selected){
//线性
circleBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false,
LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
}else
if(radioGradientID.selected){ //渐变
var matr:Matrix = new
Matrix();
matr.createGradientBox(20, 20, 0, 0,
0);
circleBoxID.graphics.beginGradientFill(GradientType.LINEAR,
[0xFF0000, 0x00FF00, 0xFF0000], [0.2, 1, 1], [0, 128, 255], matr,
SpreadMethod.REFLECT, "rgb", 0.7);
}else if(radioFullID.selected){
//填充
circleBoxID.graphics.beginFill(0xFF0000);
}
circleBoxID.graphics.drawCircle(oX,
oY, radius);
}
//画椭圆
private function tCircle(x:Number,
y:Number, tWidth:Number,
tHeight:Number):void{
tCircleBoxID.graphics.clear();
if(radioLineID.selected){
//线性
tCircleBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false,
LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
}else
if(radioGradientID.selected){ //渐变
var matr:Matrix = new
Matrix();
matr.createGradientBox(20, 20, 0, 0, 0);
//the last
parameter can selete three type: SpreadMethod.PAD or SpreadMethod.REFLECT or
SpreadMethod.REPEAT.
tCircleBoxID.graphics.beginGradientFill(GradientType.LINEAR,
[0xFF0000, 0x00FF00], [1.0, 1.0], [0x00, 0xFF], matr,
SpreadMethod.REPEAT);
}else if(radioFullID.selected){
//填充
tCircleBoxID.graphics.beginFill(0xFF0000);
}
tCircleBoxID.graphics.drawEllipse(x,
y, tWidth,
tHeight);
}
]]>
</fx:Script>
<!--画矩形-->
<mx1:Button
id="rectButID" x="500" y="50" label="画矩形" click="rect(100, 20, 250,
50);"/>
<mx1:Box
id="rectBoxID"/>
<!--画圆角矩形-->
<mx1:Button
id="cRectButID" x="500" y="120" label="画圆角矩形" click="circleRect(100, 100, 300,
80, 50);"/>
<mx1:Box
id="cRectBoxID"/>
<!--画直线-->
<mx1:Button id="lineButID"
x="500" y="250" label="画直线" click="line(350, 0);"/>
<mx1:Box
id="lineBoxID" x="50" y="250"/>
<!--画曲线-->
<mx1:Button
id="cLineButID" x="500" y="350" label="画曲线" click="cLine(300,
0);"/>
<mx1:Box id="cLineBoxID" x="100"
y="300"/>
<!--画圆-->
<mx1:Button id="circleButID"
x="500" y="450" label="画圆" click="circle(250, 450, 50);"/>
<mx1:Box
id="circleBoxID"/>
<!--画椭圆-->
<mx1:Button
id="tCircleButID" x="500" y="550" label="画椭圆" click="tCircle(120, 520, 150,
50);"/>
<mx1:Box id="tCircleBoxID"/>
<mx1:RadioButton
id="radioLineID" x="600" y="50" label="线性"/>
<mx1:RadioButton
id="radioGradientID" x="750" y="50" label="渐变"
selected="true"/>
<mx1:RadioButton id="radioFullID" x="900" y="50"
label="填充"/>
</s:Application>
原文:http://www.cnblogs.com/wshsdlau/p/3621881.html