Java中使用Graphics2D实现字符串- 竖直并居中排序显示算法

ops/2024/11/20 12:31:23/

效果:

代码:

java">    public static void drawMyString(Graphics textGraphics, String text) {// 每列显示的汉字数量int columnSize = 7;// 文字之间的垂直间距int verticalSpacing = 75;// 获取字体渲染上下文FontMetrics fm = textGraphics.getFontMetrics();// 获取字体的高度int fontHeight = fm.getHeight();System.out.println(fontHeight);// 计算每列的宽度int columnWidth = fontHeight + verticalSpacing;// 设置初始位置int x = 260;int y = 450;Font fontFour = new Font(" Source Han Sans CN", Font.BOLD, 100);textGraphics.setFont(fontFour);Color color = new Color(0, 88, 38);textGraphics.setColor(color);
//        // 绘制文字int charCount = 0;int totalColumns = (int)Math.ceil((double)text.length() / columnSize); // 总列数int totalRows = Math.min(columnSize, text.length()); // 总行数int remainingChars = text.length() % columnSize; // 最后一列剩余字符数for (int columnIndex = 0; columnIndex < totalColumns; columnIndex++) {for (int rowIndex = 0; rowIndex < totalRows; rowIndex++) {if (charCount >= text.length()) break;char ch = text.charAt(charCount);
//                // 计算当前位置int cx = x - columnIndex * columnWidth;int cy = y + rowIndex * fontHeight + rowIndex * verticalSpacing; // 加入垂直偏移量
// 计算当前位置
//                int cx = x - columnIndex * columnWidth;
//                int cy = y + rowIndex * fontHeight + rowIndex * verticalSpacing + columnIndex ;// 如果是最后一列并且不满 7 个字符,则需要将剩余字符居中if (columnIndex == totalColumns - 1 && remainingChars > 0) {int extraVerticalSpace = (columnSize - remainingChars) * (fontHeight + verticalSpacing) / 2;cy += extraVerticalSpace;}// 绘制文字textGraphics.drawString(String.valueOf(ch), cx, cy);charCount++;}}}

调用:
 

java">        // TODO 讲座名称String lectureName = "时空相分离调控的职务细胞信号转导";drawMyString(graphics, lectureName);


http://www.ppmy.cn/ops/17206.html

相关文章

4- JavaScript对象

JavaScript对象 一、数组 数组(Array)是指一组数据的集合&#xff0c;其中的每个数据被称作元素&#xff0c;数组是属于内置对象&#xff0c;数组和普通对象的功能类似&#xff0c;都可以用来存储一些值。不同的是&#xff1a; 普通对象是使用字符串作为属性名&#xff0c;而…

SQL UNION

在SQL中&#xff0c;UNION 是一个用于合并两个或多个 SELECT 语句结果集的操作符。使用 UNION 时&#xff0c;结果集会去重&#xff0c;只包含唯一的行。如果保留重复的行&#xff0c;可以使用 UNION ALL。 以下是 UNION 的一些关键点&#xff1a; 1. 去重&#xff1a;UNION 默…

OEEL图表分析——对MODIS数据集中的二维直方图绘制(短波)

简介 这里我们对图表进行 函数 oeel.plotly.directDraw(...) oeel.plotly.directDraw(data, layout, transparent, exportFormat, exportName, exportScale) directDraw. This function allows to directly communicate with OEEex. I should normally not be directly us…

Redis系列:HyperLogLog实现海量数据基数统计

1 前言 我们来回顾下在这个系列的篇 深刻理解高性能Redis的本质 中介绍过Redis的几种基本数据结构&#xff0c; 它服务于各种不同的业务场景而设计的&#xff0c;比如&#xff1a; 动态字符串(REDIS_STRING)&#xff1a;整数(REDIS_ENCODING_INT)、字符串(REDIS_ENCODING_RAW…

年费会员免费送

沉淀网络安全精华内容&#xff0c;资料总价值20W&#xff0c;八大板块内容总有你满意的&#xff0c;只做高质量优质精品内容&#xff0c;圈子内所有资料都可自行进行下载 圈子简介 安全课程视频(价值10w)-仅限内部使用&#xff08;为提升观感仅展示一条内容&#xff09; 安全…

设计模式|原型模式(Prototype Pattern)

文章目录 什么是原型模式结构优缺点优点缺点举例代码示例原型模式vs复制(copy)什么是原型模式 原型模式(Prototype Pattern)是一种创建型设计模式,其核心思想是通过复制现有对象来创建新对象,而无需显式地指定它们的类。这种模式通常用于当对象的创建成本较高,或者对象…

ABB工业机械手IRB7600减速器维修识别故障

ABB机器人齿轮箱是机器人的核心部件之一&#xff0c;其维护和保养直接关系到机器人的使用寿命和工作效率。ABB工业机械手减速机主要由齿轮、轴承、油封等部件组成。减速器的主要功能是将电机的旋转运动转换为机器人的线性运动&#xff0c;从而实现机器人的各种动作。 常见的ABB…

Vue2源码学习路径

文章的更新路线&#xff1a;JavaScript基础知识-Vue2基础知识-Vue3基础知识-TypeScript基础知识-网络基础知识-浏览器基础知识-项目优化知识-项目实战经验-前端温习题&#xff08;HTML基础知识和CSS基础知识已经更新完毕&#xff09; 正文 核心代码 它主要包括 Vue 实例、模板编…