Flex的Graphics的画画实例(静态)

<?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">


<fx:Script>
   <![CDATA[
    import flash.geom.Matrix;
   
   
   
    //画矩形
    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>


<!--画矩形-->
<mx:Button id="rectButID" x="500" y="50" label="画矩形" click="rect(100, 20, 250, 50);"/>
<mx:Box id="rectBoxID"/>


<!--画圆角矩形-->
<mx:Button id="cRectButID" x="500" y="120" label="画圆角矩形" click="circleRect(100, 100, 300, 80, 50);"/>
<mx:Box id="cRectBoxID"/>


<!--画直线-->
<mx:Button id="lineButID" x="500" y="250" label="画直线" click="line(350, 0);"/>
<mx:Box id="lineBoxID" x="50" y="250"/>


<!--画曲线-->
<mx:Button id="cLineButID" x="500" y="350" label="画曲线" click="cLine(300, 0);"/>
<mx:Box id="cLineBoxID" x="100" y="300"/>


<!--画圆-->
<mx:Button id="circleButID" x="500" y="450" label="画圆" click="circle(250, 450, 50);"/>
<mx:Box id="circleBoxID"/>


<!--画椭圆-->
<mx:Button id="tCircleButID" x="500" y="550" label="画椭圆" click="tCircle(120, 520, 150, 50);"/>
<mx:Box id="tCircleBoxID"/>


<mx:RadioButton id="radioLineID" x="600" y="50" label="线性"/>
<mx:RadioButton id="radioGradientID" x="750" y="50" label="渐变" selected="true"/>
<mx:RadioButton id="radioFullID" x="900" y="50" label="填充"/>


</s:Application>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Version 1.7 ----------- - ADD: Delphi/CBuilder 10.2 Tokyo now supported. - ADD: Delphi/CBuilder 10.1 Berlin now supported. - ADD: Delphi/CBuilder 10 Seattle now supported. - ADD: Delphi/CBuilder XE8 now supported. - ADD: Delphi/CBuilder XE7 now supported. - ADD: Delphi/CBuilder XE6 now supported. - ADD: Delphi/CBuilder XE5 now supported. - ADD: Delphi/CBuilder XE4 now supported. - ADD: Delphi/CBuilder XE3 now supported. - ADD: Delphi/CBuilder XE2 now supported. - ADD: Delphi/CBuilder XE now supported. - ADD: Delphi/CBuilder 2010 now supported. - ADD: Delphi/CBuilder 2009 now supported. - ADD: New demo project FlexCADImport. - FIX: The height of the TFlexRegularPolygon object incorrectly changes with its rotation. - FIX: Added division by zero protect in method TFlexControl.MovePathSegment. - FIX: The background beyond docuemnt wasn't filled when TFlexPanel.DocClipping=True. - FIX: In "Windows ClearType" font rendering mode (OS Windows mode) the "garbage" pixels can appear from the right and from the bottom sides of the painted rectangle of the TFlexText object. - FIX: The result rectangle incorrectly calculated in the TFlexText.GetRefreshRect method. - FIX: Added FPaintCache.rcPaint cleanup in the TFlexPanel.WMPaint method. Now it is possible to define is the drawing take place via WMPaint or via the PaintTo direct call (if rcPaint contain non-empty rectangle then WMPaint in progress). - FIX: The TFlexPanel.FPaintCache field moved in the protected class section. Added rcPaint field in FPaintCache that represents drawing rectangle. - ADD: In the text prcise mode (TFlexText.Precise=True) takes into account the rotation angle (TFlexText.Angle). - FIX: Removed FG_NEWTEXTROTATE directive (the TFlexText Precise mode should be used instead). - FIX: The TFlexRegularPolygon object clones incorrectly drawed in case when TFlexRegularPolygon have alternative brush (gradient, texture). - ADD: Add TFlexPanel.InvalidateControl virtual method which calls from TFle

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值