Как создать пунктирную линию, которая чередуется между двумя цветами? - PullRequest
2 голосов
/ 05 августа 2011

Я использую JFreeChart и хочу построить серию данных, используя линию, чередующуюся между серыми и черными штрихами, без пробелов между ними. т.е. серый серый черный черный черный черный

JFreeChart будет принимать только объект AWT Stroke или Shape в качестве метода рендеринга серии.

Насколько я понимаю, BasicStroke может иметь только один цвет и чередоваться между непрозрачным и прозрачным. Есть ли другой класс, который реализует Stroke, который позволил бы несколько цветов? Или есть другой способ решить эту проблему?

Ответы [ 3 ]

2 голосов
/ 05 августа 2011

Я собираюсь рискнуть быть застреленным здесь, потому что я программист на Android без особого опыта работы с AWT или JFreeChart, но я попробую.

Можете ли вы создать свою пунктирную линию, которая чередуется между двумя цветами, наложив две пунктирные линии и сместив фазу штрихов одного из них так, чтобы штрихи совпали?Я только что посмотрел на класс BasicStroke AWT и увидел, что помимо указания массива тире, вы также можете указать и «фазу» тире.

Вот потенциально полезный URL, который показывает, как установка фазы влияет на штриховой штрих (в нижней части страницы): http://docstore.mik.ua/orelly/java-ent/jfc/ch04_05.htm

1 голос
/ 05 августа 2011

Вы можете попробовать циклический LinearGradientPaint вместе с вашим BasicStroke.

Добавление: для рендеринга острых краев рассмотрим java.awt.TexturePaint . Чтобы отобразить ортогональные связи, рассмотрим java.awt.geom.Path2D .

1 голос
/ 05 августа 2011

У меня была похожая проблема с JFreeChart. В итоге я просто расширил соответствующий сюжет и переопределил некоторые методы рисования. Это не идеальное решение, но есть ограничение на то, что вы можете делать с JFreeChart.

...