Flex:如何使用屏幕坐标在图表上绘制线段?

时间:2012-01-16 17:14:11

标签: actionscript-3 flex

我使用LogAxis在Flex中创建了折线图。 Flex在与Log轴的主刻度标记相同的位置绘制次要刻度线,因此我需要手动绘制次刻度线。

我是Flex新手,我尝试使用mxml中的backgroundElements中的CartesianDataCanvas,然后使用ActionScript在数据画布上使用moveTo(x1,y1)和lineTo(x2,y2)绘制线条,它在(x1,y1)和(x2,y2)之间画一条线。

上述方法的问题是刻度标记长度是图表区域的函数(取决于浏览器窗口大小)。

我需要的是一种方法:

(1)从数据坐标开始(例如moveTo(x1,y1)可以正常工作)

(2)在屏幕坐标上绘制一条线(例如lineTo(x_screen,y_screen),其中x_screen和y_screen是屏幕坐标)。

在Flex / AS3中有什么能够实现这一目标吗?

或者,我可以在上述两个步骤中使用屏幕坐标吗?如果是这样,如何在屏幕和数据坐标之间进行转换?例如,屏幕的右上角是否总是一个固定的数据坐标,我可以参考它创建这样的转换?

或者,我可以在Illustrator中保存一个五像素的行,然后只是以某种方式将该图像粘贴到图表中吗?如果是这样,如何将其准确粘贴到数据坐标?

非常感谢任何想法或评论。

1 个答案:

答案 0 :(得分:1)

我建议您创建自定义轴渲染器。扩展AxisRenderer类,覆盖updateDisplayList方法。由于负责渲染轴的所有方法都是private,因此只需将它们复制到您的类中,然后对drawTicks方法进行必要的更改。但是你需要花一些时间来理解渲染逻辑。

然后将渲染器应用于图表。

<mx:LineChart>
    <mx:horizontalAxisRenderers>
        <custom:CustomAxisRenderer/>
    </mx:horizontalAxisRenderers>
</mx:LineChart>