Java上的Graphics2D笔划峰值
我有一个问题与图形2d笔划,似乎没有人有这个问题,因为我已经搜索了类似的东西,没有结果。这是图片 正如你所看到的,我的划水有刺,我不想要这些。这是我的密码 该类扩展为JButton,方法为paintComponentJava上的Graphics2D笔划峰值,java,text,graphics,outline,stroke,Java,Text,Graphics,Outline,Stroke,我有一个问题与图形2d笔划,似乎没有人有这个问题,因为我已经搜索了类似的东西,没有结果。这是图片 正如你所看到的,我的划水有刺,我不想要这些。这是我的密码 该类扩展为JButton,方法为paintComponent Graphics2D g2d = (Graphics2D)g2.create(); TextLayout tl = new TextLayout(getText(), getFont(), g2d.getFontRenderContext()); Shap
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();
降低冲程厚度时,尖峰也会变小。您是否尝试过将
基本冲程
与连接斜面
或连接圆形
?您使用的默认连接是join\u MITER
,这可能是导致这些丑陋(酷?)尖峰的原因。试试这个
Stroke stroke = new BasicStroke(1,
BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0,
null, 0);
g2.setStroke(stroke);
就像Franz刚才说的,这是JOIN_MITER不守规矩的行为之一。斜接连接将远远超出直线的实际交点 这看起来更像是字体设计的问题,而不是图形的问题。我要检查的第一件事是使用不同的字体-我认为字体设计很糟糕。哈哈,使用故障进行设计是不好的,但是看起来很酷。尽管没有Durandal,我还是会尝试一下。几乎所有的字体都有尖刺,大多数没有尖刺,我真的不喜欢。sigh@xchan衬线字体和无衬线字体之间有显著区别吗?我稍微修改了代码,笔划保留为1。看起来很不错。