2010-09-16 82 views
1

我画了一个带有特化笔划的圆角矩形,然后我尝试围绕此矩形画一条线 。但在边缘它永远不会真正匹配对方。用圆角矩形计算外线

g.setStroke(new BasicStroke(radius + .5f)); 
    g.drawRoundRect(x + radius/2, y + radius/2, width - radius, height - radius, radius, radius); 

    // Outer border 
    g.setColor(outer); 
    g.setStroke(new BasicStroke(1)); 
    g.drawRoundRect(x, y, width - 1, height - 1, radius, radius); 

你知道如何计算外边界半径吗?

好的,我尝试了一下,我得到了一个更好的,但仍然不完美;

float scale = radius/2.0f; 
    g.setPaint(p); 
    g.setStroke(new BasicStroke(2 * scale)); 
    g.drawRoundRect(x + radius/2, y + radius/2, width - radius, height - radius, radius, radius); 

    // Outer border 
    g.setColor(outer); 
    g.setStroke(new BasicStroke(1)); 
    g.drawRoundRect(x, y, width - 1, height - 1, Math.round(4*scale), Math.round(4*scale)); 

有人有更好的吗?

回答

0

我不认为有一个简单的方法。 (即使你实现了你自己的圆形矩形绘制程序)。

我建议你先画一个稍厚的外边界,然后在内部绘制内边界。

+0

在这种情况下,我仍然有问题,边界在边缘有不同的蜱虫。我刚添加了一段新的代码,效果好得多,但并不完美。 – 2010-09-16 20:41:42

+0

是的。那就是我所期望的。我不知道如何解决这个问题。您可以通过在每个内边框像素旁边填充外边框来手动执行此操作。但是,这种方法涉及到并不完全是单线的栅格数据...... – aioobe 2010-09-16 21:10:26