2012-02-21 40 views
3

當執行一個按鈕的Graphics2D對象的某些風俗畫,我得到如下結果:如何去除自定義按鈕邊框上的「妊娠紋」?

enter image description here

最左邊的按鈕是untoggled,另一種是切換。正如你所看到的,切換的按鈕有這些白色的「妊娠紋」。爲什麼這些在那裏,我如何刪除它們?

這裏是我用來繪製邊框的代碼:

// Draw border of button 
if(!getModel().isSelected()) 
{ 
    g2.fillRoundRect(2, 2, getWidth() - 5, getHeight() - 5, ARC_WIDTH, ARC_HEIGHT); 
    g2.setColor(Color.BLACK); 
    g2.drawRoundRect(0, 0, getWidth() - 1, getHeight() - 1, ARC_WIDTH, ARC_HEIGHT); 
    g2.setColor(Color.WHITE); 
    g2.drawRoundRect(1, 1, getWidth() - 3, getHeight() - 3, ARC_WIDTH, ARC_HEIGHT); 
    g2.setColor(Color.WHITE); 
    g2.drawRoundRect(2, 2, getWidth() - 5, getHeight() - 5, ARC_WIDTH, ARC_HEIGHT); 
    g2.setColor(Color.BLACK); 
    g2.drawRoundRect(3, 3, getWidth() - 7, getHeight() - 7, ARC_WIDTH, ARC_HEIGHT); 
} 
else 
{ 
    g2.fillRoundRect(2, 2, getWidth() - 5, getHeight() - 5, ARC_WIDTH, ARC_HEIGHT); 
    g2.setColor(Color.BLACK); 
    g2.drawRoundRect(0, 0, getWidth() - 1, getHeight() - 1, ARC_WIDTH, ARC_HEIGHT); 
    g2.setColor(Color.BLACK); 
    g2.drawRoundRect(1, 1, getWidth() - 3, getHeight() - 3, ARC_WIDTH, ARC_HEIGHT); 
    g2.setColor(Color.BLACK); 
    g2.drawRoundRect(2, 2, getWidth() - 5, getHeight() - 5, ARC_WIDTH, ARC_HEIGHT); 
    g2.setColor(Color.BLACK); 
    g2.drawRoundRect(3, 3, getWidth() - 7, getHeight() - 7, ARC_WIDTH, ARC_HEIGHT); 
} 
+6

我的妻子說可可脂對她很好。 – Widor 2012-02-21 17:46:18

+1

當我第一次看到這個'Q'。我就像'笏?':-o – uday 2012-02-21 17:46:29

+3

我認爲這是因爲你繪製瞭如果通過繪製幾個1px厚的邊界而不是繪製它5厚的開始 – 2012-02-21 17:47:12

回答

3

爲什麼你周圍的按鈕,繪製這麼多的圓角矩形? 據我所見,正確的方法是使用setStroke() API,同時繪製你喜歡的邊界類型。

+0

Doh!你是絕對正確的.. – mre 2012-02-21 17:56:19

2

,那是因爲你畫如果通過繪製幾個1px的厚邊框它錯過一些像素的圓弧(用不同的顏色重新繪製和放大的圖像上看到它)

使用填充設置顏色的邊界,然後畫出對比邊界

Color fillcolor = Color.WHITE; 
Color bordercolor = Color.BLACK; 

if(getModel().isSelected()) 
{ 
    fillcolor = Color.BLACK; 
} 
//fill the full rectangle 
g2.setColor(fillcolor); 
g2.fillRoundRect(0, 0, getWidth() - 1, getHeight() - 1, ARC_WIDTH, ARC_HEIGHT); 

//draw contrasted borders 
g2.setColor(bordercolor); 
g2.drawRoundRect(0, 0, getWidth() - 1, getHeight() - 1, ARC_WIDTH, ARC_HEIGHT); 
g2.setColor(bordercolor); 
g2.drawRoundRect(3, 3, getWidth() - 7, getHeight() - 7, ARC_WIDTH, ARC_HEIGHT);