画一个里面有网格的三角形

时间:2014-02-25 23:16:38

标签: swing graphics geometry awt paint

我正在尝试绘制一个内部有网格的三角形。很像图纸。我有网格,绘制三角形,但我不知道如何删除多余的网格。当前网格以for循环绘制,直到达到三角形长度的末尾。问题是,这将在三角形顶部绘制一个“网格”框。我可以在多余的东西上绘制以摆脱它吗?我应该以不同的方式绘制线条,还是在大的线条内绘制多个三角形来模拟网格?将不胜感激。

public class TrianglePanel extends JPanel{

final int pixelParameter = 20;
final int HEIGHT = 800, WIDTH = HEIGHT;

public TrianglePanel(){
    setPreferredSize(new Dimension(WIDTH,HEIGHT));
    setBackground(Color.white);
}

public void paint(Graphics g){

    int [] xPoints = {0,WIDTH/2,0};
    int [] yPoints = {HEIGHT,HEIGHT,HEIGHT/2};

    g.drawPolygon(xPoints, yPoints, 3); // Draws the triangle

    for (int i = pixelParameter; i < WIDTH/2; i += pixelParameter){
        g.drawLine(i, HEIGHT, i, (HEIGHT/2)); // Draws vertical lines
        g.drawLine(0, HEIGHT - i, (WIDTH/2), HEIGHT - i); // Draws horizontal lines
    }
  }
}

1 个答案:

答案 0 :(得分:1)

  1. 自定义绘制是通过覆盖paintComponent()方法而不是paint()方法完成的。
  2. 不要忘记在开始时调用super.paintComponent(),以便绘制背景。
  3. 创建一个Polygon对象。然后,在尝试绘制网格线之前,可以尝试使用Graphics.setClip(Shape)方法。