加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在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);
		}
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读