flex 线形图为虚线,绘制图例(2)

来源:互联网 发布:男生淘宝图片2017 编辑:程序博客网 时间:2024/05/21 22:24

(一)全虚线:lineSegmentRenderer="renderer.MarcoLineRenderer"

/** * 画连接虚线 *  * @param pointLength 点个数 * @param x1 起点横坐标 * @param y1 起点纵坐标 * @param x2 终点横坐标 * @param y2 终点纵坐标 *  * */private function drawDash(g:Graphics, pointLength:int, x1:Number, y1:Number, x2:Number, y2:Number):void { var p1:Point = new Point(x1, y1); var p2:Point = new Point(x2, y2); var max:Number = Point.distance(p1, p2); var dis:Number = 0; var p3:Point; var p4:Point; while(dis < max){ p3 = Point.interpolate(p2, p1, dis / max); dis += pointLength; if(dis > max){ dis = max; } p4 = Point.interpolate(p2, p1, dis / max); g.moveTo(p3.x, p3.y); g.lineTo(p4.x, p4.y); dis += twoPointDistance; } } }


 

(二)半实半虚线:lineSegmentRenderer="renderer.MarcoLineRenderer1" ,差别在连接两个数据点之前做了逻辑判断

//画一半实线,一半虚线public class MarcoLineRenderer1 extends LineRenderer{public function MarcoLineRenderer1(){super();}//虚线条之间的间隔长度private var twoPointDistance:int = 10; override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { var stroke:IStroke = getStyle("lineStroke"); var form:String = getStyle("form"); var items:Array = data.items; var g:Graphics = graphics; g.clear(); stroke.apply(g, null, null); var i:int = 0; var len:int = items.length; for each( var item:LineSeriesItem in items ) { var preItem:LineSeriesItem = items[i-1]; if( i > 0 ) { //前n个点之间是实线if(i<2)//if(i<(new Date().getMonth())){twoPointDistance = 1;}else{twoPointDistance = 10;}drawDash(g, len, preItem.x, preItem.y, item.x, item.y); } i++; } } 


 

 

0 0
原创粉丝点击