Flex: как нарисовать отрезок на графике, используя координаты экрана? - PullRequest
1 голос
/ 16 января 2012

Я создал линейную диаграмму во Flex, используя LogAxis.Flex рисует второстепенные отметки в том же месте, что и основные отметки для оси Log, поэтому мне нужно вручную нарисовать второстепенные отметки.

Я новичок в Flex, я пытался сделать это с помощью CartesianDataCanvas внутри backgroundElements в mxml, затем с помощью 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 Ответ

1 голос
/ 16 января 2012

Я бы посоветовал вам создать свое собственное средство визуализации осей. Расширить класс AxisRenderer, переопределить метод updateDisplayList. Поскольку все методы, отвечающие за визуализацию оси, private, просто скопируйте их в свой класс и внесите необходимые изменения в метод drawTicks. Но вам нужно потратить некоторое время на понимание логики рендеринга.

Затем примените рендер к вашему графику.

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