Java中使用Graphics2D绘制字符串文本自动换行 算法

效果:

代码:

    /*** @return void* @Author xia* @Description //TODO 写字换行算法* @Date 18:08 2021/4/1* @Param []**/private static void drawWordAndLineFeed(Graphics2D g2d, Font font, String words, int wordsX, int wordsY, int wordsWidth) {FontDesignMetrics metrics = FontDesignMetrics.getMetrics(font);// 获取字符的最高的高度int height = metrics.getHeight();int width = 0;int count = 0;int total = words.length();String subWords = words;int b = 0;for (int i = 0; i < total; i++) {// 统计字符串宽度 并与 预设好的宽度 作比较if (width <= wordsWidth) {width += metrics.charWidth(words.charAt(i)); // 获取每个字符的宽度count++;} else {// 画 除了最后一行的前几行String substring = subWords.substring(0, count);g2d.drawString(substring, wordsX, wordsY + (b * height));subWords = subWords.substring(count);b++;width = 0;count = 0;}// 画 最后一行字符串if (i == total - 1) {g2d.drawString(subWords, wordsX, wordsY + (b * height));}}}

调用:

      // 添加第二行文字Font fontTwo = new Font("MIMO天线及其空口测试技术", Font.BOLD, 140  );graphics.setFont(fontTwo);graphics.setColor(Color.WHITE);String textTwo = "MIMO天线及其空口测试技术";int twoX = 50; // 第二行文字起始x坐标int twoY = 480; // 第二行文字起始y坐标drawWordAndLineFeed(graphics, fontTwo, textTwo, twoX, twoY, 1200);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

东北大学工程训练CNC加工中心(坤图)

东北大学加工中心&#xff08;CNC&#xff09;采用的系统为FANUC系统。 要求学生自主设计图样&#xff0c;编写GCODE文件&#xff0c;操作电脑使机床按设计路径铣出图案。 本人设计的图样为坤坤图 图为用CAD设计绘制的图样。 计算坐标&#xff0c;设计铣刀轨迹&#xff0c;得…

Linux--基础IO(上)

目录 1. 文件的边角知识 1.1 文件是什么&#xff1f; 1.2 文件是怎么打开的&#xff1f; 1.3 进程与文件 进程与文件的关系 2. 重温c语言文件接口 2.1 打开文件的方式 2.2 读写文件接口的重温 2.2.1 写文件 2.2.2 读文件 3. 系统文件I/O 3.1 系统接口 3.2 系…

【深度学习-第5篇】使用Python快速实现CNN分类(模式识别)任务,含一维、二维、三维数据演示案例(使用pytorch框架)

在之前的文章中介绍了CNN的图解入门&#xff0c;CNN的MATLAB分类实现&#xff0c;CNN的MATLAB回归实现。 卷积神经网络(Convolutional Neural Networ&#xff0c;简称CNN)是一种广泛应用于图像识别领域的深度学习算法。它通过模拟人类视觉系统的层次结构&#xff0c;可以自动提…

半导体芯片相关知识

半导体工业构成 半导体工业是一个涉及多个领域和环节的复杂产业链&#xff0c;其构成包括但不限于以下几个方面&#xff1a; 芯片设计&#xff1a; 芯片设计是半导体工业的基础&#xff0c;包括集成电路&#xff08;IC&#xff09;设计、系统芯片设计、模拟电路设计等。芯片设…

nginx-1.24.0 安装教程

下载nginx安装包 mkdir -p /home/app cd /home/app wget http://nginx.org/download/nginx-1.24.0.tar.gz 解压缩 tar -zxf nginx-1.24.0.tar.gz 下载nginx二进制包编译所需的工具和依赖 yum install gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel -y 编译…

Arduino平衡小车

一&#xff0c;TB6612FNG电机驱动芯片 TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件&#xff0c;它具有大电流MOSFET-H桥结构&#xff0c;双通道电路输出&#xff0c;可同时驱动2个电机. 参数名称参数值电压范围2.7-5.5V最大输入电压15V输出电流1.2A(平均)/3.2A&…

Vitis HLS 学习笔记--HLS入门示例集合-目录

目录 1. 示例集合概述 2. Interface 接口 2.1 Aggregation_Disaggregation 聚合与解聚 2.1.1 aggregation_of_m_axi_ports 2.1.2 aggregation_of_nested_structs 2.1.3 aggregation_of_struct 2.1.4 auto_disaggregation_of_struct 2.1.5 disaggregation_of_axis_port …

Lambda表达式与函数式接口

Lambda表达式与函数式接口 1. 函数式接口 1.1 什么是函数式接口 函数式接口是指只有一个抽象方法的接口&#xff08;Object的public方法除外。&#xff09;。这种接口可以使用Lambda表达式实现&#xff0c;从而实现函数式编程的特性。另外函数式接口可以有默认方法和静态方法…

Python 安装faiss失败

报错 遇到ModuleNotFoundError: No module named faiss&#xff0c;使用下面语句安装失败。 pip3 install faiss 遇到 ERROR: Could not find a version that satisfies the requirement faiss (from versions: none) ERROR: No matching distribution found for faiss …

模块化 手写实现webpack

模块化 common.js 的导入导出方法&#xff1a; require \ export 和 module.exports export 和 module.export nodejs 内存1.4G -> 2.8G cjs ESModule 主要区别&#xff1a; require属于动态类型&#xff1a;加载执行 同步 esmodul是静态类型&#xff1a;引入时并不会真的去…

[C++][算法基础]01背包问题(动态规划)

有 &#x1d441; 件物品和一个容量是 &#x1d449; 的背包。每件物品只能使用一次。 第 &#x1d456; 件物品的体积是 &#x1d463;&#x1d456;&#xff0c;价值是 &#x1d464;&#x1d456;。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量…

Autosar AP的基本构成

1. 引言 Autosar AP的体系结构是怎样的呢&#xff1f;从整体的宏观的方向上划分&#xff0c;分为 1&#xff09;应用层&#xff0c;其中放置各种应用组件SWCs。2&#xff09;运行时基本功能软件族群&#xff0c;提供基本AutoSar基本软件中间件&#xff0c;比如经典的通信服务…

tsdx 打包ts项目

问题&#xff1a;sdk项目里面有node代码和浏览器代码&#xff0c;打包产物要同时支持两个平台。 1、 解读tsdx build命令 tsdx使用了rollup打包&#xff0c;

【漏洞复现】云时空社会化商业ERP系统slogin SQL注入漏洞

漏洞描述&#xff1a; 云时空社会化商业ERP系统slogin存在SQL注入漏洞&#xff0c;攻击者可以通过此漏洞获取数据库敏感信息。 搜索语法: Fofa-Query: app"云时空社会化商业ERP系统" 漏洞详情&#xff1a; 1.云时空社会化商业ERP系统。 2.漏洞POC&#xff1a; …

智慧园区引领未来产业趋势:科技创新驱动园区发展,构建智慧化产业新体系

目录 一、引言 二、智慧园区引领未来产业趋势 1、产业集聚与协同发展 2、智能化生产与服务 3、绿色可持续发展 三、科技创新驱动园区发展 1、创新资源的集聚与整合 2、创新成果的转化与应用 3、创新文化的培育与弘扬 四、构建智慧化产业新体系 1、优化产业布局与结构…

JavaScript:将input标签中的内容打印到控制台

使用浏览器进行开发时&#xff0c;按F12可以查看网页信息。 目标&#xff1a;实现将input标签中的内容&#xff0c;打印到控制台&#xff08;console&#xff09; HTML页面的关键代码实现&#xff1a; 登录功能&#xff1a; HTML代码&#xff1a; <div class"form-…

[八股]从反射到动态代理

从反射到动态代理 这部分文章将能解答以下问题&#xff1a; JVM的类加载过程中加载这一阶段做了什么&#xff1f; 讲一下设计模式中的代理模式 动态代理是什么&#xff1f; Spring是如何实现AOP的? 初识反射 Java反射可以在程序运行时动态加载类并获取类的详细信息&#xff0…

Node.js 22 发布,原生支持 WebSocket 客户端

昨日&#xff0c;Node.js 官方博客正式宣布 Node.js 22 的发布&#xff01;新版本亮点包括 require() ES 模块、WebSocket 客户端、V8 JavaScript 引擎的更新等&#xff01; Node.js 22 将在 10 月进入长期支持 (LTS)&#xff0c;但在此之前&#xff0c;它将是接下来六个月的 …

【AI相关】数学和统计学知识

数学和统计学的知识可以分为两部分&#xff1a; 一部分是线性代数中的基础概念&#xff0c;比如标量、向量和张量。 另一部分是概率统计中常见的分布类型&#xff0c;比如正态分布和伯努利分布。 线性代数 什么是标量&#xff1f; 标量是一个单独的数&#xff0c;可以是整…

PHP安装dbase扩展,2024最新安装日志,注意PHP版本、扩展目录路径、文件权限3个大坑

今天在我的免费云服务器&#xff0c;阿贝云上安装dbase扩展。系统是centos&#xff0c;安装好了宝塔面板。 第一步&#xff0c; yum install php-pear pecl install dbase &#xff08;显示Installing ‘/usr/lib64/php/modules/dbase.so’ install ok: channel://pecl.php.net…