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

embedded/2024/10/20 20:47:36/

效果:

代码:

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/embedded/10344.html

相关文章

Redis系列:Geo 类型赋能亿级地图位置计算

1 前言 我们在篇 深刻理解高性能Redis的本质 的时候就介绍过Redis的几种基本数据结构&#xff0c;它是基于不同业务场景而设计的&#xff1a; 动态字符串(REDIS_STRING)&#xff1a;整数(REDIS_ENCODING_INT)、字符串(REDIS_ENCODING_RAW)双端列表(REDIS_ENCODING_LINKEDLIST…

计算机网络-IS-IS链路状态数据库同步

在建立IS-IS邻接关系之后&#xff0c;路由器开始发送LSP报文进行链路状态数据库进行同步。 一、链路状态数据库同步 LSP&#xff08; Link State PDU&#xff0c;链路状态报文&#xff09; 用于交换链路状态信息。LSP分为两种&#xff1a;Level–1 LSP和Level–2 LSP。Level–1…

天星金融消保课堂开讲,金融健康意识再提升

近年来&#xff0c;随着消费者对投资理财等金融服务需求的日益增长&#xff0c;金融广告成为消费者获取金融信息的重要途径。然而&#xff0c;一些不法分子通过投放非法金融广告&#xff0c;诱导消费者参与非法金融活动&#xff0c;给消费者的权益带来了严重威胁。为此&#xf…

密码学系列2-安全模型(CPA,CCA,selective,adaptive)

本章介绍了安全模型中的CPA,selective/adaptive CCA, EUF-CMA 加密的安全性模型定义&#xff1a; 一、选择明文攻击下的不可区分性&#xff08;IND-CPA&#xff09; 初始化&#xff1a;挑战者 C \mathcal{C} C运行初始化算法算法来获取系统参数。 阶段1&#xff1a;敌手 A \…

Linux 系统中用户、用户组和文件权限管理的常用命令 useradd、usermod、groupadd、groupmod、chmod

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 1. useradd useradd 是 Linux 系统中用于创建新用户账户的命令。管理员通常用它来添加新的系统用户&#xff0c;为他们设置初始配置&#xff0c;如主目录、登录 Shell 等。这个命令具有多个选项&#x…

标定系列——OpenCV中的CV_8UC1、CV_16UC1、CV_32FC1等对应的整数值及计算方法(二十五)

标定系列——OpenCV中的CV_8UC1、CV_16UC1、CV_32FC1等对应的整数值及计算方法&#xff08;二十五&#xff09; 1.代码段2.计算方法举例3.直接给出其余对应结果 1.代码段 以下取自OpenCV文档 #define CV_BIG_INT(n) #define CV_BIG_UINT(n) #define CV_CN_MAX 512…

达梦数据库的DMRMAN工具-管理备份(备份集删除)

达梦数据库的DMRMAN工具-管理备份&#xff08;备份集删除&#xff09; 基础信息 OS版本&#xff1a; Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a; DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-200811 概述 DMRM…

PTA图论的搜索题

目录 7-1 列出连通集 题目 输入格式: 输出格式: 输入样例: 输出样例: AC代码 7-2 六度空间 题目 输入格式: 输出格式: 输入样例: 输出样例: 思路 AC代码 7-3 地下迷宫探索 题目 输入格式: 输出格式: 输入样例1: 输出样例1: 输入样例2: 输出样例2: 思路 …