在Flex中的LineChart线条上显示Label标识
发布时间:2020-12-15 01:12:26 所属栏目:百科 来源:网络整理
导读:在Flex的Chart中,柱状图很容易就加上Label了,只要设置ColumnSeries的?labelField=""和?labelPosition="outside"两个属性就可以。 但是在LineChart中却没有类似属性,至于你找没找到我不知道,反正我是没找到 但是一番研究过后,发现只要LineSeries的itemRe
在Flex的Chart中,柱状图很容易就加上Label了,只要设置ColumnSeries的?labelField=""和?labelPosition="outside"两个属性就可以。 但是在LineChart中却没有类似属性,至于你找没找到我不知道,反正我是没找到 但是一番研究过后,发现只要LineSeries的itemRenderer中稍做修改就可以了。 代码如下: package com.hp.rms.view { import flash.display.Graphics; import flash.geom.Rectangle; import mx.charts.chartClasses.LegendData; import mx.charts.renderers.CircleItemRenderer; import mx.charts.series.LineSeries; import mx.charts.series.items.LineSeriesItem; import mx.controls.Label; import mx.core.IDataRenderer; import mx.core.UIComponent; import mx.graphics.IFill; import mx.graphics.SolidColorStroke; import mx.graphics.Stroke; import mx.states.SetStyle; public class LineRenderer extends UIComponent implements IDataRenderer { private var _label:Label; private var _yField:String; private var _color:Number; private var _chartItem:LineSeriesItem; public function LineRenderer():void { super(); _label=new Label(); addChild(_label); } public function get data():Object { return _chartItem; } public function set data(value:Object):void { if (_chartItem == value) return; if (value is LineSeriesItem) { _chartItem=LineSeriesItem(value); _label.text=_chartItem.yValue.toString(); _color=SolidColorStroke(LineSeries(_chartItem.element).getStyle("lineStroke")).color; _label.setStyle("color",_color); _label.setStyle("fontSize",16); } else if (value is LegendData) { _color=SolidColorStroke(LineSeries(LegendData(value).element).getStyle("lineStroke")).color; } } override protected function updateDisplayList(unscaledWidth:Number,unscaledHeight:Number):void { super.updateDisplayList(unscaledWidth,unscaledHeight); var rc:Rectangle=new Rectangle(0,width,height); var g:Graphics=graphics; g.clear(); g.moveTo(rc.left,rc.top); g.beginFill(_color); g.drawCircle(5,5,5); g.beginFill(0xffffff); g.drawCircle(5,3); g.endFill(); _label.setActualSize(_label.getExplicitOrMeasuredWidth(),_label.getExplicitOrMeasuredHeight()); _label.move(unscaledWidth,unscaledHeight); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |