【问题标题】:Triangle Draw Method三角画法
【发布时间】:2012-08-08 19:38:30
【问题描述】:

我在使用 Java 中的 draw(Graphics g) 方法绘制三角形时遇到了麻烦。 我可以像这样画一个矩形:

public void draw(Graphics g) {
    g.setColor(colorFill);
    g.fillRect(p.x, p.y, width, height);
    g.setColor(colorBorder);
    g.drawRect(p.x, p.y, width, height);
    drawHandles(g);

其中 p 表示“形状的左上角”。我将如何以相同的方式绘制三角形?

谁能给我一个标准三角形的例子?

【问题讨论】:

    标签: java swing awt graphics2d


    【解决方案1】:

    Graphics 和 Graphics2D 中都没有 drawTriangle 方法。你需要自己做。您可以使用drawLine 方法绘制三条线或使用以下方法之一:

    这些方法适用于多边形。当您想要填充由点集定义的多边形时,您可以将前缀draw 更改为fill。我插入了文档链接。看看以了解如何使用它们。

    还有GeneralPath 类。它可以与能够绘制Shapes 的Graphics2D 一起使用。看看:

    【讨论】:

      【解决方案2】:

      您应该尝试使用Shapes API。

      看看JPanel repaint from another class 是关于绘制三角形的,看看getPath 方法的一些想法

      您还应该阅读GeneralPathDrawing Arbitrary Shapes

      这个方法很容易应用AffineTransformations到

      【讨论】:

        【解决方案3】:

        使用直线算法将 A 点与 C 点连接起来,在外循环中,让 A 点以相同的直线算法和漫游坐标向 B 点游荡,重复绘制该直线。您可能还可以包含一个 z delta,它也会迭代地递增。对于线算法,只需计算每个坐标的增量变化的两个或三个斜率,并在其他两个按比例更改后将一个斜率设置为1,使其低于1。这对于绘制连接的网格粒子之间的封闭几何区域非常重要。看一下 Qt Elastic Nodes 示例,现在想象在将其拉伸到骨架上之后在节点之间绘制三角形。 As long as it will remain online

        【讨论】:

          【解决方案4】:

          没有直接绘制三角形的命令。对于三角形的绘制,我们必须在这里使用线的概念。

          即g.drawLines(点坐标)

          【讨论】:

            【解决方案5】:

            没有直接的方法来绘制三角形。 您可以为此使用 drawPolygon() 方法。 它采用以下形式的三个参数: drawPolygon(int x[],int y[], int number_of_points); 要绘制三角形: (指定数组 x 中的 x 坐标和数组 y 中的 y 坐标以及将等于两个数组的元素的点数。像三角形一样,您将有 3 个 x 坐标和 3 个 y 坐标,这意味着您有 3 个点全部的。) 假设您要使用以下点绘制三角形:(100,50),(70,100),(130,100)public void paint(Graphics g) 中执行以下操作:

            int x[]={100,70,130};
            int y[]={50,100,100};
            g.drawPolygon(x,y,3);
            

            同样,您可以使用任意数量的点绘制任何形状。

            【讨论】:

              【解决方案6】:

              您可以使用处理库: https://processing.org/reference/PGraphics.html

              有一个方法叫triangle():

              g.triangle(x1,y1,x2,y2,x3,y3)
              

              【讨论】:

                猜你喜欢
                • 2015-08-12
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-03-19
                • 2020-10-13
                • 1970-01-01
                相关资源
                最近更新 更多