我真的被困在如何编程的问题上了。需要在以下条件下使用Java drawArc方法绘制一系列8个同心圆
使用导入java.util.Random库
我目前的代码能够得到每个圆圈的随机颜色,但不清楚如何满足其他随机条件。
// Exercise 12.6 Solution: CirclesJPanel.java
// This program draws concentric circles
import java.awt.Graphics;
import javax.swing.JPanel;
public class ConcentricCircles extends JPanel
{
// draw eight Circles separated by 10 pixels
public void paintComponent( Graphics g )
{
Random random = new Random();
super.paintComponent( g );
// create 8 concentric circles
for ( int topLeft = 0; topLeft < 80; topLeft += 10 )
{
int radius = 160 - ( topLeft * 2 );
int r = random.nextInt(255);
int gr = random.nextInt(255);
int b = random.nextInt(255);
Color c = new Color(r,gr,b);
g.setColor(c);
g.drawArc( topLeft + 10, topLeft + 25, radius, radius, 0, 360 );
} // end for
}
}
// This program draws concentric circles
import javax.swing.JFrame;
public class ConcentricCirclesTest extends JFrame {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame frame=new JFrame("Concentric Circles");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ConcentricCircles cCirclesJPanel = new ConcentricCircles();
frame.add(cCirclesJPanel);
frame.setSize(200,250);
frame.setVisible(true);
}//end main
}
发布于 2013-09-16 16:41:16
有几点是这项工作的关键:
S
的函数,添加一个台阶的随机分数,并在选定的点上用半径表示圆弧。
对于(int i= 0;i< N;i++) { g2d.setColor(…);int d= (i + 1) *S+ random.nextInt(S / 2);int r=d/ 2;g2d.drawArc(x - r,y- r,d,d,0,360);}repaint()
,以查看效果。Collections.shuffle()
上的List<Color>
。
私有最终列表集群=新的ArrayList();…对于(int i= 0;i< N;i++) {clut.add(Color.getHSBColor(浮点)I/ N,1,1);}…Collections.shuffle(clut);…g2d.setColor(clut.get(i));getPreferredSize()
以建立绘图面板的大小。
私有静态最终int W=S* 12;私有静态最终int H= W;…@覆盖公共维数getPreferredSize() {返回新维数(W,H);
https://stackoverflow.com/questions/18809216
复制相似问题