1

スイングを使用して四角形の中にひし形を描くときに問題が発生します。私のコードはこれです。誰かがそれを見て、正方形の中にダイヤモンドを作成するのに機能する完全に機能するコードを提供できるかどうか教えてください。コードは次のとおりです。

import javax.swing.*;
import java.awt.*;

public class MyDrawing extends JPanel
{
  static int width=250;
  static int height=250;
  static int x=0;
  static int y=0;
  private void doDrawing(Graphics g) 
  {

        Graphics2D g2d = (Graphics2D) g;

        g2d.setColor(Color.blue);

        //for (int i = 0; i <= 1000; i++) 
        g2d.drawRect(x, y, width,height);
        g2d.rotate(Math.toRadians(-45));
        System.out.println(Math.toRadians(-45));
        x=0;
        y=height/2;
        System.out.println(y);
        width=(int)Math.pow(Math.pow((width/2),2)*2,0.5);

        height=width;
        System.out.println("width:"+width+"height:"+height);
        g2d.drawRect(y, x, width,height);

}

@Override
public void paintComponent(Graphics g) {

    super.paintComponent(g);
    doDrawing(g);
}
}
4

1 に答える 1

0

四角形の内側にひし形を保持するには、次のようにします。 1. 長方形を描きます。 2. 長方形をその中心を中心に回転させます。

Rectangle2D rectangle = new Rectangle2D.Double(20, 20, 50, 50);
g2.draw(rectangle);
AffineTransform transform = new AffineTransform();
transform.rotate(Math.PI/4, rectangle.getX() + rectangle.width/2,    rectangle.getY() + rectangle.height/2);
g2.draw(transform);
于 2013-10-07T07:26:16.707 に答える