2011-08-05 55 views
2

我正在使用JFreeChart,并且想要使用灰色和黑色短划线之间交替的一条线绘制一系列数据,两者之间没有空格。即grayblackgrayblackgrayblack如何创建在两种颜色之间交替的虚线?

JFreeChart将只接受AWT笔画或Shape对象作为呈现系列的方法。

据我所知,BasicStroke只能有一种颜色,在不透明和透明之间交替。是否有另一个类实现了允许多种颜色的笔画?还是有另一种方法来解决这个问题?

回答

1

。我最终只是扩展了适当的情节,并重写了一些绘制方法。这不是一个理想的解决方案,但是对于使用JFreeChart可以做什么来说,存在着限制。

+0

我认为这是最后的手段,但完全可行。 – trashgod

2

因为我是一名没有AWT或JFreeChart的特定经验的Android程序员,所以我会冒着被火枪击毙的风险,但我会走了。

您可以通过叠加两条虚线来创建在两种颜色之间交替的虚线,并且将其中一个虚线的虚线相位偏移,以便虚线相互啮合?我只是看了AWT的BasicStroke类,我发现,除了指定一个破折号阵列之外,还可以指定破折号“相位”。

这里说明了如何设置相位影响虚线描边(靠近页面底部)一个可能有用的网址:我已经使用JFreeChart类似的问题http://docstore.mik.ua/orelly/java-ent/jfc/ch04_05.htm

+0

这是一个伟大的想法特雷弗,但不幸的是不会在这种情况下工作。图表渲染器将只接受单个对象作为参数,因此在不覆盖图表渲染方法的情况下无法实现。 – GenericJon

1

您可能会尝试一个循环LinearGradientPaint与您的BasicStroke一起使用。

附录:要渲染锐利的边缘,请考虑java.awt.TexturePaint。要呈现正交债券,请考虑java.awt.geom.Path2D

+0

据我所知,LinearGradientPaint总是绘制从第一颜色到第二颜色的渐变。有没有办法让渐变大小为零(以便颜色变化是即时的),但是延迟循环以便破折号具有一定的长度? – GenericJon

+0

我已经阐述过了。 – trashgod

相关问题