好親愛的夥計,我有這個問題,我真的不知道解決它的某種方法。 我在做像Java中的「繪圖應用程序」,我知道一切都準備好了,但我需要用計算機圖形算法繪製形狀。如何處理用像對象一樣的算法繪製的形狀?
所以,事情是,一旦形狀被繪製在容器中,我怎麼能把它轉換成一種「對象」,以便能夠選擇形狀並移動它(我必須用另一種算法來移動它)我只想知道我怎麼知道點擊屏幕上的一些隨機點屬於一個對象,知道我可以用算法填充它。
我在想,有一個點類,形狀類,如果我在屏幕上點擊,得到的座標和所有的形狀和自己的觀點審視內心,但是這可能不是非常有效。 任何想法傢伙? 感謝您的幫助。 下面是我的一些代碼:
public class Windows extends JFrame{
private JPanel panel;
private JLabel etiqueta,etiqueta2;
public Windows() {
initcomp();
}
public void initcomp()
{
panel = new JPanel();
panel.setBounds(50, 50, 300, 300);
etiqueta = new JLabel("Circulo Trigonometrico");
etiqueta.setBounds(20, 40, 200, 30);
etiqueta2 = new JLabel("Circulo Bresenham");
etiqueta2.setBounds(150, 110, 200, 30);
panel.setLayout(null);
panel.add(etiqueta);
panel.add(etiqueta2);
panel.setBackground(Color.gray);
this.add(panel);
this.setLayout(null);
this.setVisible(true);
this.setSize(400,400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.red);
g2d.setStroke(new BasicStroke(2));
dibujarCirculo_bresenham(g2d, 50, 260, 260);
dibujarCirculo_trigonometrico(g2d, 50, 130, 200);
}
/*This functions paints a Circle*/
public void dibujarCirculo_trigonometrico(Graphics g,int R,int xc,int yc)
{
int x,y;
for (int i = 0; i < 180; i++) {
double angulo = Math.toRadians(i);
x = (int) (Math.cos(angulo)*R);
y = (int) (Math.sin(angulo)*R);
g.drawLine(x+xc, y+yc, x+xc, y+yc);
g.drawLine((-x+xc), (-y+yc), (-x+xc), (-y+yc));
}
}
寫每個CG算法到它的自己的對象,具有位置和大小等屬性,然後可以根據需要進行控制。這些可以從'JPanel'或自包含到您的「繪圖」容器,它知道如何與它們交互 – MadProgrammer
我試過這個並得到這個錯誤: 線程「main」異常java.lang.NullPointerException \t at java.awt.Container.addImpl(未知來源) \t在java.awt.Container.add(未知來源) \t在Lienzo.initcomp(Lienzo.java:30) \t在Lienzo。(Lienzo.java:14) \t在Lienzo.main(Lienzo。java:42) –
user2430929
沒有源代碼,它不可能提出可能的解決方案 – MadProgrammer