当前位置: 首页 > news >正文

Java 变量实现矢量绘图的入门

一、核心思路

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() 即可动态更新矢量图形,这是矢量绘图的灵活特性。
http://www.jsqmd.com/news/139258/

相关文章:

  • 市场快评 · 今日复盘要点20251225
  • 从功能测试到顶尖SDET的跃迁路径
  • 手把手教你部署Open-AutoGLM(附完整脚本+配置模板下载)
  • Open-AutoGLM安装报错全解析,Python开发者必须掌握的7大解决方案
  • 2025年市面上热门的制冷设备定制厂家推荐榜,圆形逆流冷却塔/方形逆流冷却塔/玻璃钢冷却塔,制冷设备源头厂家排行榜 - 品牌推荐师
  • 2025年辽宁光伏厂家权威推荐榜:聚焦光伏板/工商业光伏/分布式光伏/太阳能/太阳能板工厂技术创新与绿色产能实力! - 海棠依旧大
  • 智能打气泵设计pcba方案开发
  • 2025年探寻优质夹爪之选:苏州柔触机器人科技有限公司 - 品牌2025
  • AI大模型时代品牌增长新引擎:GEO优化营销白皮书 - 速递信息
  • 智能打气泵设计pcba方案开发
  • Java毕设项目:基于springboot的校园传统文化交流系统(源码+文档,讲解、调试运行,定制等)
  • 基于C#的斗地主实现方案
  • 成型磨床选购避坑:哪家质量好?看这几个核心指标 - 品牌推荐大师
  • Open-AutoGLM+微信自动化=效率翻倍?专家亲授7步落地法
  • 2025年机器人气缸如何选择?柔触机器人提供思路 - 品牌2025
  • 2025年广州外贸获客公司权威推荐榜单:海外geo营销/geo海外推广/海外社媒营销源头公司精选 - 品牌推荐官
  • 不会写代码也能做分析:像“对话”一样获取数据洞察的新范式
  • 2025年GEO优化精准破局指南:优质服务商甄选与价值变现路径 - 品牌推荐排行榜
  • 初级测试如何准备SDET面试?一份可行的学习路线图
  • 【限时稀缺资源】Open-AutoGLM容器化部署方案首次公开
  • (Open-AutoGLM部署避坑大全):资深架构师亲述5年踩坑经验总结
  • maven配置阿里云镜像,本地仓库,在idea中使用maven
  • 2025年多品种小批量生产下,非标抓取供应商如何应对挑战? - 品牌2025
  • Linux alias别名一行命令修改文件名为最后编辑日期
  • Linux alias别名一行命令修改文件名为最后编辑日期
  • 好用的电子签名平台推荐 2025最新电子签名公司测评指南 - 讯息观点
  • 2025年固定式卸货平台实力厂家权威推荐榜单:小剪叉升降平台/固定式剪叉升降平台/升降平台源头厂家精选 - 品牌推荐官
  • 基于MATLAB的数字减影血管造影(DSA)实现
  • 2025最新!8个AI论文工具测评:研究生开题报告神器推荐
  • 2025年12月苏州系统门窗推荐榜:自建房/阳光房/封阳台/瑞纳斯/海达胶条/推拉/无缝焊接/瑞纳斯五金/隔热系统门窗、农村/别墅自建房,昆山巨德翔品质之选 - 海棠依旧大