2016-03-04 108 views
0

我想用fillOval命令在Java中創建一個圓。用戶輸入圓的中心座標和半徑,但我不知道如何找到它們的fillOval命令的高度和寬度。Java中的邊界框算法只有中心點和半徑

import java.util.*; 
import java.awt.*; 

public class Circles { 
    public static final Scanner Console = new Scanner(System.in); 
    public static void main(String args[]) { 

DrawingPanel panel = new DrawingPanel(400,300); 
Graphics g = panel.getGraphics(); 

//print the beginning statement of the main method 
System.out.println(""); 

//ask the user for the center and radius for the first circle 
System.out.println("Enter the x-value for the center of the first circle: "); 
double x1 = Console.nextDouble(); 
System.out.println("Enter the y-value for the center of the first circle: "); 
double y1 = Console.nextDouble(); 
System.out.println("Enter the radius for the first circle: "); 
double rad1 = Console.nextDouble(); 

//calculate the height and width of the first circle 


//ask the user for the center and radius for the second circle 
System.out.println("Enter the x-value for the center of the second circle: "); 
double x2 = Console.nextDouble(); 
System.out.println("Enter the y-value for the center of the second circle: "); 
double y2 = Console.nextDouble(); 
System.out.println("Enter the radius for the second circle: "); 
double rad2 = Console.nextDouble(); 

//calculate the height and width of the second circle 


//ask the user for the center and radius for the third circle 
System.out.println("Enter the x-value for the center of the third circle: "); 
double x3 = Console.nextDouble(); 
System.out.println("Enter the y-value for the center of the third circle: "); 
double y3 = Console.nextDouble(); 
System.out.println("Enter the radius for the third circle: "); 
double rad3 = Console.nextDouble(); 

//calculate the height and width of the third circle 


//use the fillOval method to draw each circle 
//fillOval(int x, int y, int width, int height) 

這是我所有迄今爲止。我只是不知道如何獲得高度和寬度。

+0

那麼,圓的直徑是半徑的2倍,圓的寬度和高度等於直徑,對嗎? – Andreas

+0

你的權利。我完全看着那個。顯然我試圖讓它比實際更難。謝謝!! – Vessel

回答

0

也許這簡單的小方法幫你出一點....

/** 
* Draws a circle on any Swing Component based off of the center of the circle rather than the top left corner of 
* the rectangle that the circle resides in.<pre> 
* 
* <b>Example Usage:</b> 
* 
*  DrawCircle(jLabel1, Color.RED, jLabel1.getWidth()/2, jLabel1.getHeight()/2, 40, 2); 
* </pre> 
* 
* @param ctrl (Any Swing Object) The variable name of the JComponent to draw on.<br> 
* @param color (Color) (Optional - default is the current graphics color if null is passed) The color of the line 
* which makes the circle.<br> 
* @param x (Integer) The X location (in pixels) of where the center of circle is to be located.<br> 
* @param y (Integer) The Y location (in pixels) of where the center of circle is to be located.<br> 
* @param radius (Integer) The Radius of the circle in pixels (not the diameter). Radius is: (diameter/2).<br> 
* @param thickness (Integer) The thickness of the circle line (in pixels). 
*/ 
public static void drawMyCircle(JComponent ctrl, Color color, int x, int y, int radius, int thickness) { 
    Graphics2D g2 = (Graphics2D) ctrl.getGraphics(); 
    int diameter = radius * 2; 
    g2.setColor(color); 
    g2.setStroke(new BasicStroke(thickness)); 
    //shift x and y by the radius of the circle in order to correctly center it 
    g2.drawOval(x - radius, y - radius, diameter, diameter); 
    g2.dispose(); 
    ctrl.revalidate(); 
} 

更換drawOval()與fillOval()。

+0

這有助於很多。現在它變得更有意義。謝謝! – Vessel