2012-09-08 196 views
0

我試圖用setStrokeBasicStroke繪製隨機厚度線。繪製隨機厚度線

這裏是繪畫代碼

public void paintComponent(Graphics g1) { 
     Random rand = new Random(); 
     Graphics g2 = (Graphics2D) g1; 

     //set background color 
     g2.setColor(Color.white); 
     g2.fillRect(0, 0, getWidth(), getHeight()); 
     Dimension d = getPreferredSize(); 

     //set line's color 

     float r = rand.nextFloat(); 
     float g = rand.nextFloat(); 
     float b = rand.nextFloat(); 

     Color randomColor = new Color(r,g,b); 

     g2.setColor(randomColor); 

     //set line's stroke 

     float width = rand.nextFloat(); 

     BasicStroke randomStroke = new BasicStroke(width); 


     ((Graphics2D) g2).setStroke(randomStroke); 


     for (Line2D.Double line : lines) { 
      g2.drawLine(
       (int)line.getX1(), 
       (int)line.getY1(), 
       (int)line.getX2(), 
       (int)line.getY2() 
       ); 
     } 
    } 

當我設置筆劃的寬度到一定數目的,它可以正確地繪製。我擡頭看了看BasicStroke類,它具有下列參數:

float width; 
    int join; 
    int cap; 
    float miterlimit; 
    float[] dash; 
    float dash_phase; 

而且寬度,我不知道其他人在發揮作用。 如何使用BasicStroke生成隨機厚度線?

回答

2

我認爲最大的問題是nextFloat()返回0和1之間的值 - 我猜你想要數字大於1,以便能夠看到線條粗細的任何可見差異。

除了寬度,我不確定別人的功能是什麼。

請參閱the Javadocs

+0

感謝您的回答。它現在有效,我做了一個簡單的乘法運算 'float width =(rand.nextFloat()* 10);' – roccia