Java上的Graphics2D笔画飙升

时间:2014-04-26 16:15:22

标签: java text graphics outline stroke

我有图形2d笔画的问题,似乎没有人有这个问题,因为我搜索了类似的东西而没有结果。这是图像。

enter image description here

正如你所看到的,我的中风有些飙升,我不想要那些。这是我的代码。

该类扩展为JButton,方法为paintComponent。

    Graphics2D g2d = (Graphics2D)g2.create();
    TextLayout tl = new TextLayout(getText(), getFont(), g2d.getFontRenderContext());
    Shape to = tl.getOutline(null);
    int x = (getSize().width-to.getBounds().width)/2;
    int y = (getSize().height+(to.getBounds().height-8))/2;
    System.out.println(to.getBounds().height);
    g2d.translate(x, y);
    g2d.setStroke(new BasicStroke(15.0f));
    g2d.setColor(new Color(155,155,155));
    g2d.draw(to);
    g2d.dispose();

当降低行程厚度时,尖峰也会变小。

2 个答案:

答案 0 :(得分:1)

您是否尝试将BasicStrokeJOIN_BEVELJOIN_ROUND一起使用?您正在使用的默认联接是JOIN_MITER,这可能是那些丑陋(酷?)峰值的原因。

答案 1 :(得分:0)

试试这个

Stroke stroke = new BasicStroke(1,
    BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0,
    null, 0);
g2.setStroke(stroke);

就像Franz刚刚说的那样,这是JOIN_MITER的那些不守规矩的行为之一。斜接连接将远远超出线的实际交叉点。