当前位置: 代码迷 >> Java相关 >> Grahpics drawArc
  详细解决方案

Grahpics drawArc

热度:227   发布时间:2010-06-13 09:10:37.0
Grahpics drawArc
用Graphics drawArc 绘制八个同心圆,园与园之间相差八个像素?这个怎么做啊
我是新手,希望大家多多帮我!多谢了!
搜索更多相关的解决方案: drawArc  Grahpics  

----------------解决方案--------------------------------------------------------
这个怎么画啊,我的确不知道,考试就是这个类型的题目,有没有高手指教一下,多谢了!
----------------解决方案--------------------------------------------------------

自己看看截图吧,我写的不好,不知道怎么随机生成颜色和画同心圆,并且打开后不知道怎么关闭 ,先凑合着看吧!
package circles;
import java.awt.Graphics;
import java.awt.*;
import java.awt.event.*;
public class C_circles1 extends Frame implements ActionListener
  {  static C_circles1 frm=new C_circles1();
     static Button bnt=new Button("画同心圆");
     int circle=0;
  public static void main(String[] args)
     {  
         frm .setLocation(400, 300);
         frm.setSize(500, 500);
         frm.setLayout(null);
         bnt.setBounds(220, 420, 60, 25);
         frm.add(bnt);
         bnt.addActionListener(frm);
         frm.setVisible(true);   
     }
  public void actionPerformed(ActionEvent e)
      {
         Button bt =(Button)e.getSource();
         if (bt==bnt)circle=1;
         System.out.println(" 绘图成功!");
         Graphics g=getGraphics();
         paint(g);         
     }
  public void paint(Graphics g)
    {
       g.setColor(Color.red);
       g.drawArc(125, 125, 120, 120, 45, 360);
       g.drawArc(125, 125, 230, 230, 55, 360);
       g.setColor(Color.yellow);
       g.drawArc(125, 125, 140, 140, 65, 360);
}
}
************************
哪位在帮忙修改一下啊,抛砖引玉咯!
----------------解决方案--------------------------------------------------------
程序代码:
import java.awt.*;
import javax.swing.*;

public class ShapeTest {

    public static void main(String[] args) {

        DrawFrame f = new DrawFrame();
      
      
    }
}
    class DrawFrame extends JFrame {
        public DrawFrame() {
            setTitle("ShapeTest");
            setSize(400,400);

            DrawCircles circles = new DrawCircles();
            add(circles);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
        }
    }

    class DrawCircles extends JComponent {
        public void paintComponent(Graphics g) {
            int centerX = 200;
            int centerY = 200;
            int radius = 50;
            for (int i=0;i<8;i++) {
                g.drawArc(centerX - i * 4,centerY - i * 4,radius + i * 8,radius + i * 8,0,360);
            }
           
           
        }
    }

----------------解决方案--------------------------------------------------------
比我强多了,哈哈


----------------解决方案--------------------------------------------------------
那个同心圆的圆心为什么是变化的?为什么圆心不能一直固定呢?例如
g.drawArc(120,120,140,140,0,360);
g.drawArc(120,120,160,160,0,360);
g.drawArc(120,120,180,180,0,360);
g.drawArc(120,120,180,180,0,360);


----------------解决方案--------------------------------------------------------
只需弧的height,和width每次增大二十个像素,圆心为什么还要变化?
----------------解决方案--------------------------------------------------------
//开始我也以为x,y是圆心的坐标,看了API文档才知原来是左上角的坐标

drawArc
public abstract void drawArc(int x,
                             int y,
                             int width,
                             int height,
                             int startAngle,
                             int arcAngle)绘制一个覆盖指定矩形的圆弧或椭圆弧边框。
得到的弧从 startAngle 开始跨越 arcAngle 度,并使用当前颜色。对角度的解释如下:0 度角位于 3 点钟位置。正值指示逆时针旋转,负值指示顺时针旋转。

弧的中心是矩形的中心,此矩形的原点为 (x, y),大小由 width 和 height 参数指定。

得到的弧覆盖 width + 1 像素宽乘以 height + 1 像素高的区域。

角度是相对于外接矩形的非正方形区域指定的,45 度角始终落在从椭圆中心到外接矩形右上角的连线上。因此,如果外接矩形在一个轴上远远长于另一个轴,则弧段的起点和结束点的角度将沿边框长轴发生更大的偏斜。


参数:
x - 要绘制弧的左上角的 x 坐标。
y - 要绘制弧的左上角的 y 坐标。
width - 要绘制弧的宽度。
height - 要绘制弧的高度。
startAngle - 开始角度。
arcAngle - 相对于开始角度而言,弧跨越的角度。
另请参见:
fillArc(int, int, int, int, int, int)


----------------解决方案--------------------------------------------------------
明白了版主,大致是这个意思吧
这是我的程序运行图;
顺便问一句版主,随即颜色函数怎么搞啊?
----------------解决方案--------------------------------------------------------