【问题标题】:JfreeChart LineAndShapeRenderer, How to setOutlinePaint for Line?JfreeChart LineAndShapeRenderer,如何设置线条的OutlinePaint?
【发布时间】:2015-07-13 09:00:55
【问题描述】:

我在将 OutlinePaint 设置为 JFreeChart 中 LineAndShapeRenderer 中的线时遇到问题。

我发现这篇文章 http://www.jfree.org/phpBB2/viewtopic.php?f=3&t=28347&p=78648&hilit=outlines+2d+line#p78648 也描述了我的问题。

David.Gilbert 写道:“您必须修改 LineAndShapeRenderer 代码,因为现在它只是在数据点之间绘制一条线(使用 seriesPaint)。”那是在 2009 年,我找不到任何今天的解决方案。

有没有人知道如何修改 LineAndShapeRenderer 来设置线条的轮廓。

谢谢你们。

【问题讨论】:

    标签: java jfreechart


    【解决方案1】:

    您必须覆盖LineAndShapeRendererdrawItem() 方法。在您的实现中,您需要使用公共访问器重述现有代码,如here 中的XYLineAndShapeRenderer 所示。现有的implementation 使用图形上下文的fill() 方法来渲染形状并使用draw() 来填充其轮廓;每个调用都可以有不同的绘制设置。 draw(line) 不存在类似的二分法,但您可以使用复合 Stroke 获得类似的效果,如 here 所示。

    我不知道如何设置每个油漆。

    从这个例子开始,draw() 一个Line2D 一个颜色和默认的Stroke

    Line2D shape = new Line2D.Double(PAD, PAD, SIZE - PAD, SIZE - PAD);
    g.setColor(Color.blue);
    g.draw(shape);
    

    draw() 用另一种颜色和CompositeStroke 的轮廓:

    BasicStroke s1 = new BasicStroke(16f);
    BasicStroke s2 = new BasicStroke(1f);
    g.setStroke(new CompositeStroke(s1, s2));
    g.setColor(Color.red);
    g.draw(shape);
    

    另见此相关example

    【讨论】:

    • 我选择了 CompositeStroke 的方式,但我不知道如何设置每个绘制。
    • @CrazyFisch:我已经在上面详细说明了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多