1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3. xmlns:s="library://ns.adobe.com/flex/spark"
  4. xmlns:mx="library://ns.adobe.com/flex/halo"
  5. minWidth="1024" minHeight="768" xmlns:mx1="library://ns.adobe.com/flex/mx">
  6.  
  7. <fx:Script>
  8. <![CDATA[
  9. import flash.geom.Matrix;
  10.  
  11. /*
  12. 画图形之前必要调用的函数(其中之一即可):
  13. linestyle()、beginFill()、lineGradientStyle()、beginGradientFill()、beginBitmapFill()方法来设置线条样式和/或填充。
  14. */
  15.  
  16. //画矩形
  17. private function rect(rectX:Number, rectY:Number, rectWidth:Number, rectHeight:Number):void{
  18. rectBoxID.graphics.clear();
  19. if(radioLineID.selected){ //线性
  20. rectBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
  21. }else if(radioGradientID.selected){ //渐变
  22. var matr:Matrix = new Matrix();
  23. matr.createGradientBox(20, 20, 0, 0, 0);
  24. //the last parameter can selete three type: SpreadMethod.PAD or SpreadMethod.REFLECT or SpreadMethod.REPEAT.
  25. rectBoxID.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x00FF00], [1, 1], [0x00, 0xFF], matr, SpreadMethod.REPEAT);
  26. }else if(radioFullID.selected){ //填充
  27. rectBoxID.graphics.beginFill(0xFF0000, 1.0);
  28. }
  29. rectBoxID.graphics.drawRect(rectX, rectY, rectWidth, rectHeight);
  30. //
  31. }
  32.  
  33. //画圆角矩形
  34. private function circleRect(cRectX:Number, cRectY:Number, cRectWidth:Number, cRectHeight:Number, cRectDU:Number):void{
  35. cRectBoxID.graphics.clear();
  36. if(radioLineID.selected){ //线性
  37. cRectBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
  38. }else if(radioGradientID.selected){ //渐变
  39. //the last parameter can selete three type: SpreadMethod.PAD or SpreadMethod.REFLECT or SpreadMethod.REPEAT.
  40. cRectBoxID.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x0000FF], [1, 0.1], [0, 255], new Matrix(), SpreadMethod.PAD);
  41. rectBoxID.graphics.endFill();
  42. }else if(radioFullID.selected){ //填充
  43. cRectBoxID.graphics.beginFill(0xFF0000, 1.0);
  44. }
  45. cRectBoxID.graphics.drawRoundRect(cRectX, cRectY, cRectWidth, cRectHeight, cRectDU);
  46. }
  47.  
  48. //画直线
  49. private function line(lineX:Number, lineY:Number):void{ //两个参数都表示从起始的位置坐标x、y相加这两个参数后值就是结束的x、y值
  50. lineBoxID.graphics.clear();
  51. if(radioLineID.selected){ //线性
  52. lineBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
  53. }else if(radioGradientID.selected){ //渐变
  54. lineBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
  55. lineBoxID.graphics.lineGradientStyle(GradientType.LINEAR, [0xFF0000, 0x0000FF], [1, 0.5], [0, 255], new Matrix(), SpreadMethod.PAD);
  56. }else if(radioFullID.selected){ //(填充)直线不存在填充的,呵呵
  57. lineBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
  58. }
  59. lineBoxID.graphics.lineTo(lineX, lineY);
  60. }
  61.  
  62. //画曲线
  63. private function cLine(endX:Number, endY:Number):void{
  64. cLineBoxID.graphics.clear();
  65. if(radioLineID.selected){ //线性
  66. cLineBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
  67. }else if(radioGradientID.selected){ //渐变
  68. var matr:Matrix = new Matrix();
  69. matr.createGradientBox(20, 20, 0, 0, 0);
  70. cLineBoxID.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x00FF00, 0xFF0000], [0.2, 1, 1], [0, 128, 255], matr, SpreadMethod.REFLECT);
  71. }else if(radioFullID.selected){ //填充
  72. cLineBoxID.graphics.beginFill(0xFF0000);
  73. }
  74. cLineBoxID.graphics.curveTo(100, 80, endX, endY); //前两个参数表示弧度的偏移量,后两个参数表示结束点的x、y坐标
  75. }
  76.  
  77. //画圆
  78. private function circle(oX:Number, oY:Number, radius:Number):void{
  79. circleBoxID.graphics.clear();
  80. if(radioLineID.selected){ //线性
  81. circleBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
  82. }else if(radioGradientID.selected){ //渐变
  83. var matr:Matrix = new Matrix();
  84. matr.createGradientBox(20, 20, 0, 0, 0);
  85. circleBoxID.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x00FF00, 0xFF0000], [0.2, 1, 1], [0, 128, 255], matr, SpreadMethod.REFLECT, "rgb", 0.7);
  86. }else if(radioFullID.selected){ //填充
  87. circleBoxID.graphics.beginFill(0xFF0000);
  88. }
  89. circleBoxID.graphics.drawCircle(oX, oY, radius);
  90. }
  91.  
  92. //画椭圆
  93. private function tCircle(x:Number, y:Number, tWidth:Number, tHeight:Number):void{
  94. tCircleBoxID.graphics.clear();
  95. if(radioLineID.selected){ //线性
  96. tCircleBoxID.graphics.lineStyle(20, 0xFF0000, 1.0, false, LineScaleMode.VERTICAL, CapsStyle.NONE, JointStyle.MITER, 100);
  97. }else if(radioGradientID.selected){ //渐变
  98. var matr:Matrix = new Matrix();
  99. matr.createGradientBox(20, 20, 0, 0, 0);
  100. //the last parameter can selete three type: SpreadMethod.PAD or SpreadMethod.REFLECT or SpreadMethod.REPEAT.
  101. tCircleBoxID.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x00FF00], [1.0, 1.0], [0x00, 0xFF], matr, SpreadMethod.REPEAT);
  102. }else if(radioFullID.selected){ //填充
  103. tCircleBoxID.graphics.beginFill(0xFF0000);
  104. }
  105. tCircleBoxID.graphics.drawEllipse(x, y, tWidth, tHeight);
  106. }
  107.  
  108. ]]>
  109. </fx:Script>
  110.  
  111. <!--画矩形-->
  112. <mx1:Button id="rectButID" x="500" y="50" label="画矩形" click="rect(100, 20, 250, 50);"/>
  113. <mx1:Box id="rectBoxID"/>
  114.  
  115. <!--画圆角矩形-->
  116. <mx1:Button id="cRectButID" x="500" y="120" label="画圆角矩形" click="circleRect(100, 100, 300, 80, 50);"/>
  117. <mx1:Box id="cRectBoxID"/>
  118.  
  119. <!--画直线-->
  120. <mx1:Button id="lineButID" x="500" y="250" label="画直线" click="line(350, 0);"/>
  121. <mx1:Box id="lineBoxID" x="50" y="250"/>
  122.  
  123. <!--画曲线-->
  124. <mx1:Button id="cLineButID" x="500" y="350" label="画曲线" click="cLine(300, 0);"/>
  125. <mx1:Box id="cLineBoxID" x="100" y="300"/>
  126.  
  127. <!--画圆-->
  128. <mx1:Button id="circleButID" x="500" y="450" label="画圆" click="circle(250, 450, 50);"/>
  129. <mx1:Box id="circleBoxID"/>
  130.  
  131. <!--画椭圆-->
  132. <mx1:Button id="tCircleButID" x="500" y="550" label="画椭圆" click="tCircle(120, 520, 150, 50);"/>
  133. <mx1:Box id="tCircleBoxID"/>
  134.  
  135. <mx1:RadioButton id="radioLineID" x="600" y="50" label="线性"/>
  136. <mx1:RadioButton id="radioGradientID" x="750" y="50" label="渐变" selected="true"/>
  137. <mx1:RadioButton id="radioFullID" x="900" y="50" label="填充"/>
  138.  
  139. </s:Application>

Flex Graphics的更多相关文章

  1. arcgis for flex全国地图天气预报的具体实现过程解析

    系统架构是B/S,开发语言是flex,开发工具是myeclise或者flashbuild,通过调用百度提供的在线天气预报web api接口的方式来实现. 采用地图是ArcGIS全国地图,开发接口为ar ...

  2. FLEX的动画

    1.使用自带效果 在Flex里面不像在Flash里面随意制作动画了,Flex更趋向于应用程序,而不是动画制作了,所以没有了时间轴的概念.在Flex中使用动画效果,可以用Flex自带的Effect,或者 ...

  3. FLEX 特效

    一.简介: flex特效是ria应用程序的rich的重要组成部分. EffectManager类管理所有的特效实例以避免不必要的定时器和方法调用造成的内内存使用过大.一个效果由两部分组成:一是效果的E ...

  4. Flex AdvancedDatagrid使用

    首先我先来看下利用Advanced Datagrid做出的效果,然后我们再对其中所利用的知识进行讲解,效果图如下: 我们来看下这个效果我们所用到的关于Advanced Datagrid的相关知识: 一 ...

  5. Flex开发自定义控件

    前期准备: 点击File菜单 -> New -> MXML Component,然后弹出一个对话框. 在对话框中输入组件名,选择此组件继承的类型,如:Canvas,DataGrid,Com ...

  6. flex 生命周期 ibm引用

    Flex 本质 提起 Flex 我们不得不追述其发展历史以及两个很重要的名词或者说技术,那就是 Flash 和 Flash Player.Flash 是 Adobe 推出的基于时间轴的交互式矢量图和 ...

  7. Flex里的命名空间,fx、mx、s【转】

    Flex 4带给我们的,是全新的命名空间.了解这些命名空间必定是一件好事情.Flex 4有三个非常重要的命名空间,分别是: xmlns:fx=”http://ns.adobe.com/mxml/200 ...

  8. Flex显示麦克风当前音量

    Flex动态显示麦克风当前音量 效果: 代码: <?xml version="1.0" encoding="utf-8"?> <s:Appli ...

  9. flex 图片旋转(解决公转和自转问题)

    在Flex中图片的旋转是既有公转和自转的.这样在图片旋转的时候就有一定小麻烦: 为了更好地说明问题,先引入两个概念:“自转”和“公转”.想象一下,地球在绕着太阳公转的同时,它自己也在自转.Flash应 ...

随机推荐

  1. PostgreSQL 区域设置

    安装PostgreSQL 10.3 windows版本时区域请选择"default locale",安装成功后输入命令: show lc_ctype; show lc_collat ...

  2. js自执行函数、调用递归函数、圆括号运算符、函数声明的提升

    前言 起因是我要在jquery的ajax中需要根据返回值来决定是否继续发起ajax请求,这是一个有条件的循环,符合条件就跳出.可以使用while循环的,但是想了想还是递归调用好用. 调用递归函数 递归 ...

  3. C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)

    第二次更新,后面的代码有问题,有些专辑图片读取不到.发现是PNG图片的问题.在读取的过程中调试发现,图片帧前10个字节包含了图片的格式,在有些歌曲写着JPEG的格式,数据却是PNG的.先说下思路. j ...

  4. SHOI2013 扇形面积并

    题目链接:戳我 补一张图 我们尝试把圆上的扇形转化成直线上的矩形--我们维护[1,2*m]的区间,那么每个能产生贡献的子区间的长度*第K大的半径的平方的总和就是answer了. 怎么转化呢?左端点为a ...

  5. djang系列5.5-- 图书管理系统实例

    一.表格设计 E-R图 分析图 models.py from django.db import models # Create your models here. class Author(model ...

  6. egret的tween动画循环播放

    开发中发现了egret的自带tween动画中tweenGroup没有自动重新播放的代码,就使用了一种较笨的方法进行播放 比如:我在exml皮肤文件中写了一个动画组tweenGroup,并且在ts文件中 ...

  7. linux - 【LAMP环境配置安装注意安装步骤】 9

    (一)安装gcc glibc-devel glibc-headers ==>依赖项 kernel-headers ==>依赖项 libgomp gcc-c++ libstdc++-deve ...

  8. 常用类(日期时间格式转换,date,枚举)

    1 常用类 1.1 日期时间类 计算机如何表示时间? 时间戳(timestamp):距离特定时间的时间间隔. 计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms ...

  9. 【文文殿下】对后缀自动机(SAM)的理解

    后缀自动机,是一种数据结构,是由状态和转移关系构成的.它虽然叫做后缀自动机,可是他却与后缀并没有什么太大的联系. 后缀自动机的每一种状态都是原串的一些子串的集合,每个子串只唯一存在于某个状态中,对每一 ...

  10. 【FAQ】tomcat启动jdk版本不一致

    一.tomcat7.exe与startup.bat的区别: 1.这两个都可以启动tomcat,但tomcat7.exe必须安装了服务才能启动,而startup.bat不需要 2.另外一个区别是它们启动 ...