java 画图 Graphics 文字自动换行
- /**
- * 文字超出限定长度自动换行
- *
- * @param g 画布
- * @param font 字体样式
- * @param text 文字
- * @param widthLength 最大长度 (多少长度后需要换行)
- * @param x 文字位置坐标 x
- * @param y 文字位置坐标 Y
- * @param yn 每次换行偏移多少pt
- */
- private void drawString(Graphics2D g, Font font, String text, int widthLength, int x, int y, int yn) {
- FontMetrics fg = g.getFontMetrics(font);
- List<String> ls = new ArrayList<>(2);
- getListText(fg, text, widthLength, ls);
- for (int i = 0; i < ls.size(); i++) {
- if (i == 0) {
- g.drawString(ls.get(i), (int) UnitConv.mm2pt(x), (int) UnitConv.mm2pt(y));
- } else {
- g.drawString(ls.get(i), (int) UnitConv.mm2pt(x), (int) UnitConv.mm2pt(y + yn));
- }
- }
- }
- /**
- * 递归 切割字符串
- * @param fg
- * @param text
- * @param widthLength
- * @param ls
- */
- private void getListText(FontMetrics fg, String text, int widthLength, List<String> ls) {
- String ba = text;
- boolean b = true;
- int i = 1;
- while (b) {
- if (fg.stringWidth(text) > widthLength) {
- text = text.substring(0, text.length() - 1);
- i++;
- } else {
- b = false;
- }
- }
- if (i != 1) {
- ls.add(ba.substring(0, ba.length() - i));
- getListText(fg, ba.substring(ba.length() - i), widthLength, ls);
- } else {
- ls.add(text);
- }
- }
画图中需要填写文字,而文字大小不固定的时候就会超出画布,显示不了文字,就需要自动换行。
java 画图 Graphics 文字自动换行的更多相关文章
- java画图之曲线拖动
目标:在窗体上按下鼠标按键.然后拖动鼠标,在按下和拖动之间绘制曲线 事件机制 事件源对象:窗体 事件监听方法:addMouseListener(MouseListener l);addMouseMot ...
- java画图之初体验
1.实现画图程序所需的API类 JFrame JButton ActionListener 动作事件接口 ActionEvent ...
- JAVA 跑马灯文字效果
JAVA跑马灯文字效果的实现: 1. 首先创建一个继承JFrame类的HorseRaceLightTextFrame窗体类,代码如下: package com.example.horseracelig ...
- Java图片加文字水印
Java图片加文字水印 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.I ...
- canvas文字自动换行、圆角矩形画法、生成图片手机长按保存、方形图片变圆形
canvas的文字自动换行函数封装 // str:要绘制的字符串 // canvas:canvas对象 // initX:绘制字符串起始x坐标 // initY:绘制字符串起始y坐标 // lineH ...
- JAVA 画图机制
java学习脚印:深入java绘图机制 写在前面 封装性越好的类在使用时,只要清楚接口即可,而不应该让程序员了解其内部结构; 对于平常的绘图来讲,java绘图机制无需了解太多,但是朦胧容易产生错误,绘 ...
- java画图程序_图片用字母画出来_源码发布_版本二
在上一个版本:java画图程序_图片用字母画出来_源码发布 基础上,增加了图片同比例缩放,使得大像素图片可以很好地显示画在Notepad++中. 项目结构: 运行效果1: 原图:http://imag ...
- java画图程序_图片用字母画出来_源码发布
在之前写了一篇blog:java画图程序_图片用字母画出来 主要是把一些调试的截图发布出来,现在程序调试我认为可以了(当然,你如果还想调试的话,也可以下载源码自己调试). 就把源码发布出来. 项目结构 ...
- java画图程序_图片用字母画出来
最近在研究怎样将图片用字母在文本编辑工具中“画”出来. 你看了这个可能还不知道我想说什么? 我想直接上图,大家一定就知道了 第一张:小猫 原图:http://www.cnblogs.com/hongt ...
随机推荐
- Nginx设置禁止通过IP访问服务器并且只能通过指定域名访问
为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,需要在nginx上设置禁止通过IP访问服务器,只能通过域名访问. 最关键的一点是,在server的设置里面添加这么一行: liste ...
- Poj 2599 Godfather(树的重心)
Godfather Time Limit: 2000MS Memory Limit: 65536K Description Last years Chicago was full of gangste ...
- TensorFlow(四):手写数字识别
一:数据集 采用MNIST数据集:-->官网 数据集被分成两部分:60000行的训练数据集和10000行的测试数据集. 其中每一张图片包含28*28个像素,我们把这个数组展开成一个向量,长度为2 ...
- angular2事件触发
输入框输入过程触发Select()方法. <input type="text" name="code" [(ngModel)]="code&qu ...
- (转)Redis Cluster(集群)
一.概述 在前面的文章中介绍过了redis的主从和哨兵两种集群方案,redis从3.0版本开始引入了redis-cluster(集群).从主从-哨兵-集群可以看到redis的不断完善:主从复制是最简单 ...
- mybatis oracle 逆向工程
- Linux MySQL 储存中文失败简单解决办法
如图,保存的中文都变成了??? show create table table_name;可以查到表的默认编码 这里看到默认的字符集是latin1,而不是utf8 需要修改 alter databas ...
- 怎么看部分元素的js代码?
- Linux下SSH命令使用方法详解(摘自网络)
备注:检查自己的linux系统中是否已经安装了某一些软件的命令: rpm -qa | grep 软件名 例如 rpm -qa | grep vsftpd 1.查看SSH客户端版本 有的时候需要确认 ...
- Python 学习随笔 - 2 - list 、tuple 、dict、set 特殊数据类型 及 实际应用
1.list list是一种有序的集合,可以随时添加和删除其中的元素; 和C语言不同的地方是list里的元素甚至可以是不同类型的,甚至是另个list 例如:['A', 'B', 'C'] ['A ...