Java图形用户界面绘制一个三角形,输入坐标,选择颜色,调用draw(g)绘制相应图形,计算图像的周长和面积,输入旋转角度实现旋转,输入缩放比例,实现图形缩放
时间: 2024-06-08 12:07:43 浏览: 122
Java GUI 绘制出三角形
以下是Java代码示例,可以实现绘制三角形、计算周长和面积、旋转和缩放:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Triangle extends JPanel {
private Point p1, p2, p3;
private Color color;
public Triangle(Point p1, Point p2, Point p3, Color color) {
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
this.color = color;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
// 设置颜色
g.setColor(color);
// 绘制三角形
int[] xPoints = {p1.x, p2.x, p3.x};
int[] yPoints = {p1.y, p2.y, p3.y};
g.drawPolygon(xPoints, yPoints, 3);
// 计算周长和面积
double a = Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
double b = Math.sqrt(Math.pow(p3.x - p2.x, 2) + Math.pow(p3.y - p2.y, 2));
double c = Math.sqrt(Math.pow(p1.x - p3.x, 2) + Math.pow(p1.y - p3.y, 2));
double perimeter = a + b + c;
double s = (a + b + c) / 2;
double area = Math.sqrt(s * (s - a) * (s - b) * (s - c));
// 输出周长和面积
System.out.println("周长:" + perimeter);
System.out.println("面积:" + area);
// 旋转图形
int centerX = (p1.x + p2.x + p3.x) / 3;
int centerY = (p1.y + p2.y + p3.y) / 3;
int angle = 45; // 旋转角度
g.translate(centerX, centerY);
g.rotate(Math.toRadians(angle));
g.translate(-centerX, -centerY);
g.drawPolygon(xPoints, yPoints, 3);
// 缩放图形
double scale = 1.5; // 缩放比例
int newP1x = (int) ((p1.x - centerX) * scale + centerX);
int newP1y = (int) ((p1.y - centerY) * scale + centerY);
int newP2x = (int) ((p2.x - centerX) * scale + centerX);
int newP2y = (int) ((p2.y - centerY) * scale + centerY);
int newP3x = (int) ((p3.x - centerX) * scale + centerX);
int newP3y = (int) ((p3.y - centerY) * scale + centerY);
int[] newXPoints = {newP1x, newP2x, newP3x};
int[] newYPoints = {newP1y, newP2y, newP3y};
g.drawPolygon(newXPoints, newYPoints, 3);
}
public static void main(String[] args) {
Point p1 = new Point(100, 100);
Point p2 = new Point(150, 150);
Point p3 = new Point(200, 100);
Color color = Color.RED;
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.getContentPane().add(new Triangle(p1, p2, p3, color));
frame.setVisible(true);
}
}
```
在上面的代码中,我们首先定义了一个Triangle类,它继承自JPanel类。Triangle类有四个成员变量:p1、p2、p3和color,分别表示三角形的三个顶点和颜色。在paintComponent方法中,我们首先设置颜色,然后使用drawPolygon方法绘制三角形。
接着,我们根据三角形的三个顶点计算出周长和面积。其中,周长等于三条边的长度之和,面积可以使用海伦公式进行计算。计算完成后,我们将周长和面积输出到控制台。
下一步是实现旋转。我们首先计算出三角形的中心点坐标,然后使用translate方法将画布移动到中心点,使用rotate方法进行旋转,最后再将画布移回原来的位置。为了方便起见,这里我们将旋转角度设置为45度。
最后是实现缩放。我们首先计算出三角形的中心点坐标,然后根据缩放比例计算出每个顶点的新坐标。最后使用drawPolygon方法绘制缩放后的三角形。
在main方法中,我们定义了三个顶点和颜色,然后创建了一个JFrame对象,并将Triangle对象添加到JFrame的内容面板中。运行程序后,就可以看到绘制出来的三角形了。
阅读全文