[英]Java making a drawCircle method calling drawOval
我需要制作一個看起來像的drawCircle方法
public void drawCircle(int x, int y, int radius)
繪制一個具有該中心和半徑的圓。 drawCircle方法需要調用drawOval。 我不確定如何從我的drawCircle方法中調用drawOval而不將Graphics傳遞給它。 這可能嗎?
這是我所擁有的:
import java.awt.*;
import javax.swing.*;
class test
{
public static void main(String[] args)
{
JFrame frame = new JFrame("test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new MyPanel());
frame.pack();
frame.setVisible(true);
}
}
class MyPanel extends JPanel
{
MyPanel()
{
setBackground(Color.WHITE);
setPreferredSize(new Dimension(250,250));
}
public void paintComponent(Graphics page)
{
super.paintComponent(page);
drawCircle(50,50,20);
}
private void drawCircle(int x, int y, int radius)
{
drawOval(x - radius, y - radius, radius*2, radius*2);
}
}
您可以通過在swing組件上調用getGraphics()
來獲取圖形上下文。 但是我仍然會創建我的繪圖方法來接受圖形上下文。
例如
private void drawCircle(Graphics g, int x, int y, int radius) {
g.fillOval(x-radius, y-radius, radius*2, radius*2)
}
或者,
private void drawCircle(int x, int y, int radius) {
getGraphics().fillOval(x-radius, y-radius, radius*2, radius*2)
}
請注意, getGraphics()
可以返回null
。 您最好從paint()方法中調用drawCircle()方法並將其傳遞給Graphics上下文。
例如
public void paint(Graphics g) {
super.paint(g);
drawCircle(g, 10, 10, 5, 5);
}
import java.awt.Shape;
import java.awt.geom.Ellipse2D;
public static Shape getCircle(
final double x,
final double y,
final double r
) {
return new Ellipse2D.Double(x - r, y - r, r * 2, r * 2);
}
好處:
g.draw(getCircle(x, y, r));
在paint()方法中執行g.draw(getCircle(x, y, r));
或g.fill...
)。 您說過“ drawCircle方法需要調用drawOval。”,但是也許您只是不知道替代方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.