我在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 表示"形状的左上角"。我将如何以同样的方式绘制三角形?
有人可以给我一个标准三角形的例子吗?
在图形和图形2D中都没有drawTriangle方法。你需要自己做。您可以使用 drawLine
方法绘制三条线,也可以使用以下方法之一:
- drawPolygon(int[] xPoints, int[] yPoints, int nPoints) 绘制多边形
- (多边形 p)
- drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
这些方法适用于面。如果要填充由点集定义的面,可以将前缀draw
更改为fill
。我插入了文档链接。看看了解如何使用它们。
还有 GeneralPath 类。它可以与Graphics2D一起使用,后者能够绘制形状。看一看:
- http://docs.oracle.com/javase/tutorial/2d/geometry/arbitrary.html
您应该尝试使用 Shape
的 API。
看看另一个类的JPanel重绘,这是关于绘制三角形的,看看getPath
方法的一些想法
您还应该阅读 GeneralPath & Draw Arbitrary Shapes。
此方法非常容易将仿射变换应用于
使用线算法将点 A 与点 C 连接起来,并在外循环中,让点 A 以相同的线算法和游移坐标向点 B 漂移,重复绘制该线。您可能还可以包括一个 z 增量,该增量也以迭代方式递增。对于线算法,只需为每个坐标的增量变化计算两个或三个斜率,并在按比例更改其他两个斜率后将一个斜率设置为 1,使它们低于 1。这对于在连接的网格粒子之间绘制封闭的几何区域非常重要。看看Qt弹性节点的例子,现在想象一下在骨架上拉伸后在节点之间绘制三角形。只要它保持在线
直接绘制三角形的命令。对于三角形的绘制,我们必须在这里使用直线的概念。
即 g.drawLines(点的坐标)
没有直接的方法可以绘制三角形。你可以为此使用 drawPolygon() 方法。它采用以下形式的三个参数: drawPolygon(int x[],int y[], int number_of_points);
要绘制三角形:(指定数组 x 中的 x 坐标和数组 y 中的 y 坐标,以及等于两个数组元素的点数。就像三角形一样,您将有 3 个坐标和 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);
类似地,您可以使用任意数量的点绘制任何形状。
您可以使用处理库:https://processing.org/reference/PGraphics.html
有一种方法叫做三角形():
g.triangle(x1,y1,x2,y2,x3,y3)