わかりました親愛なる皆さん、私はこの質問を持っていますが、それを解決する特定の方法を本当に知りません. 私はJavaで「ペイントアプリケーション」のようにやっています.すべての準備ができていることは知っていますが、コンピュータグラフィックスアルゴリズムで形状をペイントする必要があります.
つまり、形状がコンテナーにペイントされたら、形状を選択して移動できるように、一種の「オブジェクト」のように変換するにはどうすればよいですか (別のアルゴリズムで移動する必要があります)。画面内でクリックされたランダムなポイントがオブジェクトに属していることをどのように知ることができるかを知るには、それを(アルゴリズムで)塗りつぶすことができます。
Point クラスと Shape クラスがあり、画面をクリックすると座標が取得され、すべての形状とそのポイントが表示されると考えていましたが、これはあまり効率的ではない可能性があります。アイデアはありますか?助けてくれてありがとう。これが私のコードの一部です:
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));
}
}