2012-02-21 19 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

+1

初めてこの「Q」を見たとき。私は 'Wat? 'のようでした:-o – uday

+3

私は、あなたが –

答えて

3

:ここ

そして、私は境界線を描画するために使用するコードですか? 私が見る限り、正しい方法はsetStroke() APIを使用して、好きな境界線を描画することです。

+0

Doh!あなたは絶対に正しいです.. – mre

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); 
関連する問題