drawOval()函数怎么算出圆心的坐标?

时间:2022-03-15 12:38:05
drawOval(50,50,100,100)圆心的坐标是多少呢?为什么不是(75,75)?

2 个解决方案

#1


圆心应该在(100,100),drawOval的原型是
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>
*/

#1


圆心应该在(100,100),drawOval的原型是
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>
*/