Grahpics drawArc
用Graphics drawArc 绘制八个同心圆,园与园之间相差八个像素?这个怎么做啊我是新手,希望大家多多帮我!多谢了!
----------------解决方案--------------------------------------------------------
这个怎么画啊,我的确不知道,考试就是这个类型的题目,有没有高手指教一下,多谢了!
----------------解决方案--------------------------------------------------------
自己看看截图吧,我写的不好,不知道怎么随机生成颜色和画同心圆,并且打开后不知道怎么关闭 ,先凑合着看吧!
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);
}
}
}
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)
----------------解决方案--------------------------------------------------------
明白了版主,大致是这个意思吧
这是我的程序运行图;
顺便问一句版主,随即颜色函数怎么搞啊?
----------------解决方案--------------------------------------------------------