【问题标题】:Line2D thickness (too thick)Line2D 厚度(太厚)
【发布时间】:2012-06-17 08:22:40
【问题描述】:

我必须画一张图。我使用 AWT 库来做到这一点。

问题是,我需要画出非常细的线条。 但我总是得到太粗的线条。

在这里你可以看到,我的意思。

这是绘制这些线条的代码

BufferedImage image = new BufferedImage(300, 60, BufferedImage.TYPE_INT_ARGB);
Graphics g = image.createGraphics();
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.BLACK);
g2.setStroke(new BasicStroke(0.001f,BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER));
Shape s = new Line2D.Double(new Point2D.Double(x_pos, unten - 9),
                            new Point2D.Double(x_pos, unten - 4));
g2.draw(s);

【问题讨论】:

  • 非常好的问题。我也对一个优雅的解决方案感兴趣。
  • 如需尽快获得更好的帮助,请发帖SSCCE

标签: java graphics 2d awt java-2d


【解决方案1】:

代替

Shape s = new Line2D.Double(new Point2D.Double(x_pos, unten - 9),
                            new Point2D.Double(x_pos, unten - 4));
g2.draw(s);

尝试使用

g2.drawLine(x_pos, unten - 9, x_pos, unten - 4);

Shape 的东西并不能真正应对低于 1 的厚度...(据我所知)

并且请不要在编码时混合使用不同的语言,这会让我患上眼癌(即使它是德语):P。最好是坚持使用英文变量名,因为所有关键字也是英文的。

【讨论】:

  • 对不起德语单词。我们使用它们的原因是我们必须将遗留代码从 vb 移植到 java,并且我们必须使用相同的变量名。是的,我已经使用了 drawLine 方法,但我得到了相同的结果。我的第一个解决方案是为它设置一个规模。这很好用,但我无法在图表上方添加一些数字。我使用 Shape 进行绘图的第二个原因是,我需要 double 或 float 值进行绘图!
【解决方案2】:

尝试:

g2.setStroke(new BasicStroke(0.5f));

或任何其他适合您需要的值。

【讨论】:

    猜你喜欢
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 2021-12-09
    • 2011-11-06
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多