如何在JPanel中调整科赫雪花绘制程序的三角形边长
问题解决方法
1. 需要修改的代码位置
你要调整的是KochSnowFlake类kochsnowflake方法中硬编码的三个初始顶点坐标,当前代码如下:
Point p1 = new Point(100, 100); Point p2 = new Point(300, 100); Point p3 = new Point(200, 263);
当前初始三角形的边长为200像素(p1到p2的x轴差值为300-100=200),按比例放大三个顶点的坐标差值即可放大三角形边长,比如要把边长放大到原来的2倍,可以修改为:
// 边长放大为400像素,同时调整偏移量避免图形超出画布 Point p1 = new Point(200, 200); Point p2 = new Point(600, 200); Point p3 = new Point(400, 546);
2. 更灵活的可配置写法
你可以把边长、偏移量抽成常量,后续调整大小只要修改常量即可,不用手动计算三个点的坐标:
// 在KochSnowFlake类中添加常量定义 private static final int EDGE_LENGTH = 600; // 自定义三角形边长 private static final int OFFSET_X = 150; // 画布X轴偏移量 private static final int OFFSET_Y = 150; // 画布Y轴偏移量 // 替换原有三个顶点的定义代码 Point p1 = new Point(OFFSET_X, OFFSET_Y); Point p2 = new Point(OFFSET_X + EDGE_LENGTH, OFFSET_Y); Point p3 = new Point(OFFSET_X + EDGE_LENGTH/2, OFFSET_Y + (int)(EDGE_LENGTH * Math.sqrt(3)/2));
3. 可参考的搜索关键词
- Java Swing 图形坐标缩放
- 科赫雪花 尺寸调整
- Java Graphics 绘制图形大小修改
额外注意
你现有代码的paintComponent方法里调用了super.paintComponents(g);,多了末尾的s,正确写法是super.paintComponent(g);,否则会出现图形重影、刷新异常的问题。
内容的提问来源于stack exchange,提问作者zackchess3
相关产品推荐
相关产品推荐

