海北藏族自治州网站建设_网站建设公司_Oracle_seo优化
2025/12/25 16:54:21 网站建设 项目流程

一、核心思路

Java 实现矢量绘图的基础是 java.awt 和 javax.swing 包:
  1. 定义坐标变量(如 xywidthheight)来描述图形的位置和尺寸;
  2. 继承 JPanel 并重写 paintComponent(Graphics g) 方法,这是绘图的核心方法;
  3. 将 Graphics 转换为 Graphics2D(矢量绘图的核心类),支持更丰富的矢量操作;
  4. 通过变量控制图形的绘制(移动、缩放、旋转等)。

二、入门示例代码

下面是一个完整的入门示例,用变量控制绘制一个可调整位置、大小和旋转角度的矩形(矢量图形),你可以直接复制运行:
java
 
运行
 
 
 
 
import javax.swing.*;
import java.awt.*;// 自定义面板类,用于绘制矢量图形
class VectorDrawPanel extends JPanel {// 核心变量:控制图形的位置、尺寸、旋转角度private int rectX = 100;    // 矩形左上角x坐标private int rectY = 100;    // 矩形左上角y坐标private int rectWidth = 150;// 矩形宽度private int rectHeight = 80;// 矩形高度private double rotateAngle = Math.toRadians(15); // 旋转角度(转成弧度)@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 将Graphics转换为Graphics2D,支持矢量绘图(旋转、缩放等)Graphics2D g2d = (Graphics2D) g;// 开启抗锯齿,让矢量图形边缘更平滑(矢量绘图必备)g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);// 1. 绘制原始矩形(用变量控制)g2d.setColor(Color.BLUE);g2d.drawRect(rectX, rectY, rectWidth, rectHeight); // 仅绘制轮廓(矢量)// 2. 绘制旋转后的矩形(通过变量修改角度)g2d.setColor(Color.RED);// 先平移坐标系到矩形中心,再旋转,避免绕原点旋转g2d.translate(rectX + rectWidth/2, rectY + rectHeight/2);g2d.rotate(rotateAngle);// 绘制填充矩形(矢量),坐标以旋转后的中心为基准g2d.fillRect(-rectWidth/2, -rectHeight/2, rectWidth, rectHeight);// 重置坐标系(避免影响后续绘制)g2d.rotate(-rotateAngle);g2d.translate(-(rectX + rectWidth/2), -(rectY + rectHeight/2));}
}// 主窗口类
public class VectorDrawingDemo {public static void main(String[] args) {// 创建窗口JFrame frame = new JFrame("Java 矢量绘图入门");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(500, 500);frame.setLocationRelativeTo(null); // 窗口居中// 添加自定义绘图面板VectorDrawPanel panel = new VectorDrawPanel();panel.setBackground(Color.WHITE);frame.add(panel);// 显示窗口frame.setVisible(true);// 演示:修改变量,动态更新图形(每500ms旋转5度)new Timer(500, e -> {// 修改旋转角度变量panel.rotateAngle += Math.toRadians(5);// 重绘面板(更新图形)panel.repaint();}).start();}
}
 

三、代码关键解释

  1. 核心变量
    • rectX/rectY:控制矩形的位置,修改这两个值可以移动图形;
    • rectWidth/rectHeight:控制矩形尺寸,缩放时只需修改这两个变量(矢量特性);
    • rotateAngle:控制旋转角度,通过数学计算(弧度)实现矢量旋转。
  2. Graphics2D 关键操作
    • setRenderingHint:开启抗锯齿,让矢量图形边缘平滑(矢量绘图的基础优化);
    • translate:平移坐标系,让图形绕自身中心旋转(而非窗口原点);
    • rotate:基于角度变量旋转图形,矢量旋转不损失精度;
    • drawRect/fillRect:绘制矢量矩形(仅记录坐标和尺寸,而非像素)。
  3. 动态更新
    • Timer 定时修改 rotateAngle 变量,调用 repaint() 重绘图形,体现 “变量控制矢量图形” 的核心逻辑。

四、扩展:绘制更多矢量图形

只需修改变量和绘图方法,就能实现其他矢量图形:
java
 
运行
 
 
 
 
// 绘制矢量圆形(变量控制圆心和半径)
int circleX = 250, circleY = 250, radius = 50;
g2d.drawOval(circleX - radius, circleY - radius, 2*radius, 2*radius);// 绘制矢量线段(变量控制起点和终点)
int lineX1 = 50, lineY1 = 50, lineX2 = 400, lineY2 = 400;
g2d.drawLine(lineX1, lineY1, lineX2, lineY2);// 绘制矢量多边形(变量数组控制顶点)
int[] polyX = {300, 350, 325}; // 多边形顶点x坐标数组
int[] polyY = {100, 100, 50};  // 多边形顶点y坐标数组
g2d.drawPolygon(polyX, polyY, 3);
 

总结

  1. Java 矢量绘图的核心是用变量定义图形的坐标、尺寸、角度,而非固定像素;
  2. Graphics2D 是矢量绘图的核心类,支持旋转、缩放等矢量操作,且图形缩放无失真;
  3. 修改控制图形的变量后,调用 repaint() 即可动态更新矢量图形,这是矢量绘图的灵活特性。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询