2 个解决方案
#1
圆心应该在(100,100),drawOval的原型是
public void drawOval(int x,int y,int width,int height);
第三、四个参数是外接矩形的宽度和高度,不是坐标值。
public void drawOval(int x,int y,int width,int height);
第三、四个参数是外接矩形的宽度和高度,不是坐标值。
#2
对于drawOval(int x,int y,int width,int height);来说,
假想有个矩形刚好把圆包住,那么矩形的左上角坐标就是(x,y),矩形的右下角的坐标就是
(x+width,y+height),圆心坐标是(x+width/2,y+height/2)
所以把drawOval(50,50,100,100)这个圆包住的矩形的左上角坐标
是(50,50),右下角是(50+100,50+100),也就是(150,150),圆心是:
(50+100/2,50+100/2),也就是(100,100)
如果换成drawOval(50,50,200,200)的话,圆心坐标就是:
(50+200/2,50+200/2),也就是(150,150)
下面的例子可以观察坐标点
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Oval extends Applet implements MouseMotionListener{
public void init() {
addMouseMotionListener(this);
}
public void paint(Graphics g) {
g.drawOval(50,50,200,200);
}
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){
this.showStatus(e.getX()+" " +e.getY());
}
}
/*
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
code = "Oval.class"
width = "500"
height = "300"
>
</APPLET>
</CENTER>
</BODY>
</HTML>
*/
假想有个矩形刚好把圆包住,那么矩形的左上角坐标就是(x,y),矩形的右下角的坐标就是
(x+width,y+height),圆心坐标是(x+width/2,y+height/2)
所以把drawOval(50,50,100,100)这个圆包住的矩形的左上角坐标
是(50,50),右下角是(50+100,50+100),也就是(150,150),圆心是:
(50+100/2,50+100/2),也就是(100,100)
如果换成drawOval(50,50,200,200)的话,圆心坐标就是:
(50+200/2,50+200/2),也就是(150,150)
下面的例子可以观察坐标点
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Oval extends Applet implements MouseMotionListener{
public void init() {
addMouseMotionListener(this);
}
public void paint(Graphics g) {
g.drawOval(50,50,200,200);
}
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){
this.showStatus(e.getX()+" " +e.getY());
}
}
/*
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
code = "Oval.class"
width = "500"
height = "300"
>
</APPLET>
</CENTER>
</BODY>
</HTML>
*/
#1
圆心应该在(100,100),drawOval的原型是
public void drawOval(int x,int y,int width,int height);
第三、四个参数是外接矩形的宽度和高度,不是坐标值。
public void drawOval(int x,int y,int width,int height);
第三、四个参数是外接矩形的宽度和高度,不是坐标值。
#2
对于drawOval(int x,int y,int width,int height);来说,
假想有个矩形刚好把圆包住,那么矩形的左上角坐标就是(x,y),矩形的右下角的坐标就是
(x+width,y+height),圆心坐标是(x+width/2,y+height/2)
所以把drawOval(50,50,100,100)这个圆包住的矩形的左上角坐标
是(50,50),右下角是(50+100,50+100),也就是(150,150),圆心是:
(50+100/2,50+100/2),也就是(100,100)
如果换成drawOval(50,50,200,200)的话,圆心坐标就是:
(50+200/2,50+200/2),也就是(150,150)
下面的例子可以观察坐标点
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Oval extends Applet implements MouseMotionListener{
public void init() {
addMouseMotionListener(this);
}
public void paint(Graphics g) {
g.drawOval(50,50,200,200);
}
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){
this.showStatus(e.getX()+" " +e.getY());
}
}
/*
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
code = "Oval.class"
width = "500"
height = "300"
>
</APPLET>
</CENTER>
</BODY>
</HTML>
*/
假想有个矩形刚好把圆包住,那么矩形的左上角坐标就是(x,y),矩形的右下角的坐标就是
(x+width,y+height),圆心坐标是(x+width/2,y+height/2)
所以把drawOval(50,50,100,100)这个圆包住的矩形的左上角坐标
是(50,50),右下角是(50+100,50+100),也就是(150,150),圆心是:
(50+100/2,50+100/2),也就是(100,100)
如果换成drawOval(50,50,200,200)的话,圆心坐标就是:
(50+200/2,50+200/2),也就是(150,150)
下面的例子可以观察坐标点
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Oval extends Applet implements MouseMotionListener{
public void init() {
addMouseMotionListener(this);
}
public void paint(Graphics g) {
g.drawOval(50,50,200,200);
}
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){
this.showStatus(e.getX()+" " +e.getY());
}
}
/*
<HTML>
<HEAD>
</HEAD>
<BODY BGCOLOR="000000">
<CENTER>
<APPLET
code = "Oval.class"
width = "500"
height = "300"
>
</APPLET>
</CENTER>
</BODY>
</HTML>
*/