2016-11-17 4 views
-1

オブジェクトを破線で描画したいというチェックボックスをクリックすると、ストロークを作成して使用しようとしたときにグラフィックが認識されないというプログラムを作成しようとしています。コードはダブルバッファーに設定されているので、イメージを作成するときにイメージが消えません。私はどのようにオブジェクトを破線で描くようにするのか分かりませんし、助けに感謝します!あなたは(あなたがすでに持っているものをちょうど私の頭の上から)Graphics.drawRect()は、このような方法で何かを使用する必要がありますあなたのイメージ上に四角形を描画するためにグラフィックオブジェクトにsetStrokeを使用するにはどうすればいいですか?

Graphics bgg = bg.getGraphics(); 
    if(!jCheckBox1.isSelected()){ 
     bgg.drawImage(fg, jPanel1.getX(), jPanel1.getY()-50, null); 
    } 
    else{ 
     Graphics2D g2d = (Graphics2D) bgg; 
     float[] fa = {10, 10, 10}; 
     BasicStroke bs = new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10, fa, 10); 
     g2d.setStroke(bs); 
     g2d.drawImage(fg, jPanel1.getX(), jPanel1.getY()-50, null); 
    } 
+0

のために、私はあなたがここで何をしようとして正確にはわからないことができます。 Imageの上に破線を描こうとしているだけですか? – DevilsHnd

+0

私はそれをクリックすると、破線を描く形になるようにしようとしています。 – kbb5268

+0

さて、どのような形を正確に描こうとしていますか? Graphics.drawImage()メソッドは、実際に使用したいものではないと思います。イメージを画像ファイルから特定のグラフィックス領域に描画するために使用されています。 – DevilsHnd

答えて

0

5の
Graphics bgg = bg.getGraphics(); 
if(!jCheckBox1.isSelected()){ 
    bgg.drawImage(fg, jPanel1.getX(), jPanel1.getY()-50, null); 
} 
else{ 
    Graphics2D g2d = (Graphics2D) bgg; 
    //Draw image into panel... 
    g2d.drawImage(fg, jPanel1.getX(), jPanel1.getY()-50, null); 

    //Draw dashed rectagle in center of panel... 
    int pW = jPanel1.getWidth();  // Get panel Width 
    int pH = jPanel1.getHeight(); // Get panel Height 
    float[] fa = {10, 10, 10};  // The dash pattern 
    // Set Brush thickness (5) 
    BasicStroke bs = new BasicStroke(5, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 10, fa, 10); 
    g2d.setStroke(bs); 
    Dimension rectangle = new Dimension(200, 50); // Our desired rectangle dimensions 
    // Center locations for rectangle... 
    int x1 = (pW/2) - (rectangle.width/2); 
    int y1 = (pH/2) - (rectangle.height/2); 
    int x2 = rectangle.width; 
    int y2 = rectangle.height; 
    g2d.setColor(Color.RED);  // Set the dashed shape line color 
    g2d.drawRect(x1, y1, x2, y2); // Draw the dashed rectangle 
    // free resourses 
    bgg.dispose(); 
    g2d.dispose(); 
    jPanel1.revalidate(); // update panel graphics 
} 

ブラシストロークはかなり重いダッシュ:)

関連する問題