3、关于自定义ItemRenderer
个人觉得即使Flex不开源,现有的功能就很大程度的能够满足自定义的需求。对于通过数据绑定实现的控件(List,DataGrid,Chart),每一行数据的呈现都可以自定义——自定义样式,自定义行为。对于LineChart中,默认的状况是用圆点描述每个数据,然后连起来,鼠标经过圆点时显示点上横纵座标的值。自定义的需求就有许多,比如不需要鼠标经过就显示点上的值,比如使用其它形状的点标示数据,比如用不同的颜色标示每个点,等等,其实都是一些定义ItemRenderer样式的问题。
举个例子:比如实现默认在点上标记某个数据,不需要鼠标经过,这个可以通过将ItemRenderer设置成一个Label来实现。这个Label首先要继承UIComponent,如果要实现显示该点上的数据的话就要实现 IDataRenderer 来获取。它的表现样式是通过重写updateDisplayList方法实现的。
as 代码
- import mx.charts.ChartItem;
- import mx.core.IDataRenderer;
- import mx.controls.Label;
- import mx.core.UIComponent;
- import mx.charts.series.LineSeries;
- import mx.charts.series.items.LineSeriesItem;
- import flash.display.Graphics;
- import flash.geom.Rectangle;
- import mx.charts.chartClasses.GraphicsUtilities;
- import mx.core.IDataRenderer;
- import mx.graphics.IFill;
- import mx.graphics.IStroke;
- import mx.skins.ProgrammaticSkin;
- import mx.controls.Label;
- import mx.core.UIComponent;
-
- public class MyLabel extends UIComponent implements IDataRenderer
- {
- private var _label:Label;
-
- public function MyLabel():void
- {
- super();
- _label = new Label();
- addChild(_label);
- _label.setStyle("color",0x999999);
- _label.setStyle("paddingTop",4);
- }
- private var _chartItem:ChartItem;
-
- public function get data():Object
- {
- return _chartItem;
- }
-
- public function set data(value:Object):void
- {
- if (_chartItem == value)
- return;
- _chartItem = ChartItem(value);
-
- if(_chartItem != null)
- _label.text = LineSeriesItem(_chartItem).yValue.toString();
- }
-
- override protected function updateDisplayList(unscaledWidth:Number,
- unscaledHeight:Number):void
- {
- super.updateDisplayList(unscaledWidth, unscaledHeight);
-
- _label.setActualSize(_label.getExplicitOrMeasuredWidth(),_label.getExplicitOrMeasuredHeight());
- }
-
- }
当然也可以将ItemRenderer设置成其它空间,在Chart中常用的会是CircleItemRenderer(圆点)等等。对不同的点的现实不同效果可以通过将逻辑写到自定义的ItemRenderer里实现。
分享到:
- 2007-11-03 15:42
- 浏览 4936
- 评论(0)
- 论坛回复 / 浏览 (0 / 4331)
- 查看更多
相关推荐
在本项目中,"linechart.rar" 是一个包含Vue.js应用程序的压缩文件,主要用于演示如何使用canvas元素动态绘制折线图。Vue.js是一个流行的前端框架,它提供了组件化开发、数据绑定和响应式更新等功能,使得构建用户...
这个控件是.NET Framework的一部分,位于System.Windows.Forms命名空间下,它提供了丰富的图表类型,包括线性图(LineChart)、柱状图(Histogram)和饼图(PieChart)。通过灵活地配置和设置各种属性,我们可以定制...
在这个场景中,我们将探讨如何使用`AChartEngine`库来绘制一个动态更新横轴为当前时间的折线图,即`LineChart`。 首先,我们需要了解`AChartEngine`的基础概念。`AChartEngine`提供了一系列的类和方法,使得开发者...
首先,需要在布局文件中添加一个`View`来承载`LineChart`,然后在Java代码中找到这个`View`并将其转换为`LineChart`对象: ```java LineChart lineChart = findViewById(R.id.line_chart); ``` 3. **数据准备**...
在完成自定义的CategoryItemLabelGenerator后,我们需要将其设置到LineChart的`categoryItemLabelGenerator`属性上。这通常可以通过IReport的GUI界面完成,或者在JRXML文件中进行配置。 最后,我们还可以使用...
1. **图表类型丰富**:支持折线图(LineChart)、柱状图(BarChart)、饼图(PieChart)、雷达图(RadarChart)、散点图(ScatterChart)等多种图表类型,满足多种数据可视化需求。 2. **自定义程度高**:开发者...
### Open Flash Chart 中文使用参数对照表详解 #### 一、概述 Open Flash Chart(简称 OFC)是一款基于 Flash 的图表绘制工具,以其强大的图表功能和简易的操作方式,在 Web 应用开发中得到了广泛的应用。它支持...
在对应的Activity或Fragment中,找到图表容器并初始化`LineChart`对象: ```java LineChart lineChart = findViewById(R.id.line_chart_container); lineChart.setDrawGridBackground(false); // 可选:隐藏网格...
【少儿编程Scratch第23讲】主要讲解的是如何利用Scratch进行数据可视化,特别是创建线图(Line Chart)的方法。线图是一种常见的数据展示方式,尤其适合展示数据随时间的变化趋势。在这个教程中,作者选择了北京12...
1. 多种图表类型:MPChart提供了多种图表类型,包括LineChart(折线图)、BarChart(柱状图)、PieChart(饼图)、ScatterChart(散点图)、RadarChart(雷达图)等,满足不同数据展示需求。 2. 数据绑定:MPChart...
LineChart chart = findViewById(R.id.chart); chart.getAxisLeft().setDrawGridLines(false); chart.getXAxis().setDrawGridLines(false); chart.setDrawGridBackground(false); chart.setNoDataText("无数据"); /...
在Windows Forms应用开发中,`Chart`控件是一种强大的可视化工具,用于展示各种类型的数据,如柱状图、折线图、饼图等。本文将深入探讨如何利用`Winform Chart`实现实时数据的更新、图表的滚动以及缩放功能。 ### 1...
3. 初始化和配置`LineChart` 4. 创建和设置数据集 5. 实现数据的动态更新 6. 自定义样式和交互 通过对这个压缩包内的项目进行解压和分析,你可以深入理解这些步骤,并进一步提升你的Android数据可视化技能。
3. **交互性**:"Amazing WPF Chart" 支持用户与图表的交互,如点击图表元素获取详细信息、缩放和平移查看细节、通过拖动调整数据点等。 4. **实时数据更新**:对于需要实时展示变化数据的应用,该控件支持动态更新...
要在项目中使用HelloCharts,首先需要将库文件添加到项目中。在Android Studio中,可以通过Gradle依赖方式引入。在项目的build.gradle文件中添加以下代码: ```groovy dependencies { implementation '...
5. **线图(Line Chart)**:线图用于显示数据的变化趋势,常用于时间序列数据。实现线图可能涉及到描点、连接点、平滑曲线等技术,需要对坐标系统有深入理解。 6. **柱状图(Bar Chart)**:柱状图用于比较不同...
在C#项目中使用Chart控件,首先需要通过NuGet包管理器安装`System.Windows.Forms.DataVisualization`库。然后在程序中添加对`using System.Windows.Forms.DataVisualization.Charting;`命名空间的引用。 3. **创建...
在描述的“chart报表实例”中,我们可以推测这可能是一个使用编程语言(如C#或VB.NET)结合Microsoft Chart Controls(MSchart)创建的项目。Microsoft Chart Controls是.NET Framework的一部分,它为Windows Forms...
在Android-LineChart-master这个项目中,你可能会找到具体的实现示例和更多细节,包括如何处理数据源、绘制自定义视图以及优化性能等方面。通过研究源代码,你可以更好地理解和掌握Android折线图的动态交互实现。
例如,如果我们要创建一个线图,我们可以使用LineChart。以下是如何创建一个基本线图的步骤: 1. **初始化Chart对象**: 在XML布局文件中添加一个View,并在代码中找到它,然后将其转换为LineChart。 ```xml ...