2016-11-17 13 views
-1

我想做一个程序,当你点击一个复选框,说你想用虚线绘制一个对象时,但是当我创建一个笔画并尝试使用它时,我的图形不会承认它。该代码被设置为双缓冲区,因此在创建图像时图像不会消失。我不知道如何使用虚线画出物体,并希望得到任何帮助!如何在图形对象上使用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

我不完全相信你想在这里做什么。你只是试图在图像上画一条虚线吗? – DevilsHnd

+0

我想让它变成这样,当我点击它时,它会使我画出一条虚线的形状。 – kbb5268

+0

那么你试图画什么形状?我不认为Graphics.drawImage()方法是您真正想要使用的方法,因为它用于...以及将图像(如从图像文件)绘制到特定的图形区域。 – DevilsHnd

回答

0

为了绘制一个矩形到你的形象,你将需要使用Graphics.drawRect()方法是这样的(只是把我的头的顶部,你已经有了):

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 
} 

的5笔触使一个相当沉重的破折号:)

相关问题