2010-09-16 117 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