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

(四)显示节点的渲染器:itemRenderer="renderer.SolidColorCircleRenderer",可通过样式控制数据是否显示在图形上,比较复杂

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
		{
			super.updateDisplayList(unscaledWidth, unscaledHeight);
			
			if(chartItem && chartItem.hasOwnProperty("fill"))
			{
				var solidColor:SolidColor = chartItem.fill as SolidColor;
				
				var circleRadius:int = chartItem.element.radius;
				
				graphics.clear();
				
				var labelPosition:String = getStyle("labelPosition") + "";
				//可通过样式控制是否显示数据在图形上
				if(labelPosition == "outside")
				{
					var labelColor:Number = parseInt(getStyle("labelColor") + "");
					var labelSize:Number = parseInt(getStyle("labelSize") + "");
					
					labelColor = isNaN(labelColor) ? solidColor.color : labelColor;
					labelSize = isNaN(labelSize) ? 10 : labelSize;
					
					var tf:TextFormat = new TextFormat(null, labelSize, labelColor);
					
					var txt:TextField = new TextField();
					
					if(labelFunction != null)
					{
						txt.text = labelFunction(chartItem);
					}
					else
					{
						txt.text = chartItem["yValue"] + "";
					}
					txt.setTextFormat(tf);
					txt.width = txt.textWidth + 5;
					
					var maxX:Number = chartItem["element"]["width"];
					var maxY:Number = chartItem["element"]["height"];
					
					var tx:Number = -txt.width/2 + circleRadius;
					var ty:Number = -txt.textHeight - circleRadius;
//					var bmData:BitmapData = new BitmapData(txt.width, txt.textHeight, true, 0x00FFFFFF);
					
					var bmData:BitmapData = new BitmapData(100, 100, true, 0x00FFFFFF);
					
					var txtX:Number = x + tx;
					var txtY:Number = y + ty;
					
					if(txtY < 0)
					{
						ty = txt.textHeight + 1;
					}
					if(txtX < 0)
					{
						tx = circleRadius;
					}
					if((txtX + txt.width) > maxX)
					{
						tx = -txt.width;
					}
					var mtx:Matrix = new Matrix(1, 0, 0, 1, tx, ty - 1);
					
					bmData.draw(txt);
					graphics.beginBitmapFill(bmData, mtx);
					graphics.drawRect(tx, ty, txt.width, txt.textHeight);
					graphics.endFill();
				}
				
				var thickness:Number = parseInt(getStyle("borderThickness") + "");
				
				var fromIndex:Number = parseInt(getStyle("fromIndex") + "");
				fromIndex = isNaN(fromIndex) ? Number.MAX_VALUE : fromIndex;
				
				if(fromIndex >= chartItem.index)
				{
					graphics.lineStyle(thickness, 0xffffff, 1);
					var itemColor:uint = solidColor.color;
					if(colorFunction != null)
					{
						itemColor = colorFunction(chartItem, solidColor.color);
					}
					graphics.beginFill(itemColor, solidColor.alpha);
					graphics.drawEllipse(0, 0, circleRadius * 2, circleRadius * 2);
				}
				graphics.endFill();
			}
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值