java Graphics2D drawString()内容换行问题
//字符串总宽度
private int getStringLength(Graphics g,String str) {
char[] strcha=str.toCharArray();
int strWidth = g.getFontMetrics().charsWidth(strcha, 0, str.length());
System.out.println("字符总宽度:"+strWidth);
return strWidth;
}
//每一行字符串宽度 自定义 也就是画布中一行的宽度
int rowWidth=1110;
//字符串字符的个数
int strnum= str.length();
//每一行字符的个数
private int getRowStrNum(int strnum,int rowWidth,int strWidth){
int rowstrnum=0;
rowstrnum=(rowWidth*strnum)/strWidth;
System.out.println("每行的字符数:"+rowstrnum);
return rowstrnum;
}
//字符行数
private int getRows(int strWidth,int rowWidth){
int rows=0;
if(strWidth%rowWidth>0){
rows=strWidth/rowWidth+1;
}else{
rows=strWidth/rowWidth;
}
System.out.println("行数:"+rows);
return rows;
}
//字符高度
private int getStringHeight(Graphics g) {
int height = g.getFontMetrics().getHeight();
System.out.println("字符高度:"+height);
return height;
}
ps:Graphics 注意设置font 才能计算宽度和高度
开始绘制
private void drawStringWithFontStyleLineFeed(Graphics g, String strContent, int loc_X, int loc_Y, Font font){
g.setFont(font);
//获取字符串 字符的总宽度
int strWidth =getStringLength(g,strContent);
//每一行字符串宽度
int rowWidth=1110;
System.out.println("每行字符宽度:"+rowWidth);
//获取字符高度
int strHeight=getStringHeight(g);
//字符串总个数
System.out.println("字符串总个数:"+strContent.length());
if(strWidth>rowWidth){
int rowstrnum=getRowStrNum(strContent.length(),rowWidth,strWidth);
int rows= getRows(strWidth,rowWidth);
String temp="";
for (int i = 0; i < rows; i++) {
//获取各行的String
if(i==rows-1){
//最后一行
temp=strContent.substring(i*rowstrnum,strContent.length());
}else{
temp=strContent.substring(i*rowstrnum,i*rowstrnum+rowstrnum);
}
if(i>0){
//第一行不需要增加字符高度,以后的每一行在换行的时候都需要增加字符高度
loc_Y=loc_Y+strHeight;
}
g.drawString(temp, loc_X, loc_Y);
}
}else{
//直接绘制
g.drawString(strContent, loc_X, loc_Y);
} }
java Graphics2D drawString()内容换行问题的更多相关文章
- java写文件实现换行
Java 写文件实现换行 第一种: 写入的内容中利用\r\n进行换行 File file = new File("D:/text"); try { if(!file.exist ...
- Java 创建文本内容
Java 创建文本内容 import java.io.FileWriter; import java.io.IOException; public class TestFile { public st ...
- 在<img src="..." title="..."> 中使title的内容换行的方法
在<img src="..." title="...">中要使TITILE的内容换行,不能使用html标签,只能用ASCII码,方法如下: < ...
- element table 组件内容换行方案
element table 组件内容换行方案 white-space的值: normal 默认.空白会被浏览器忽略.pre 空白会被浏览器保留.其行为方式类似 HTML 中的<pre> 标 ...
- java读取文本文件内容2
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/183 很久之前写了一篇Java读取文本文件内容,链接地址是 ...
- java读取文本文件内容
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/128 java读取文本文件内容 今天写代码写着要调试一个很 ...
- 关于Html中的title属性内容换行,以及Bootstrap的tooltip的使用
1.HTML中的title属性的内容换行: 鼠标经过悬停于对象时提示内容(title属性内容)换行排版方法,html title 换行方法总结. html的title属性默认是显示一行的.如何换行呢? ...
- html title属性内容换行方法(静态页面)
鼠标经过悬停于对象时提示内容(title属性内容)换行排版方法,html title 换行方法总结. html的title属性默认是显示一行的,这里介绍两种换行方法为大家分享使用. 一.直接title ...
- TextView 中文本内容换行
TextView 中文本内容换行 首先如图所示,我的第一栏围城的书名和书的介绍是在同一行 但是我想让书名和书的介绍分开个站一行 这时我只要在我的数组文本中的文本用 "\n" 就可以 ...
随机推荐
- 51nod1227 平均最小公倍数
$Ans(l,r)=ans(r)-ans(l-1)\\ans(n)=\sum\limits_{i=1}^n \sum\limits_{j=1}^i \frac{j}{gcd(i,j)}\\=\sum\ ...
- js和php刷新页面的方法
js中3个最优的刷新页面的方法 window.location.reload(): window.history.go(0): document.execCommand(''Refresh''): p ...
- 20175236 《Java程序设计》实验一(Java开发环境的熟悉)实验报告
一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:温丰帆 学号:20175236 指导教师:娄嘉鹏 实验日期:2019年4月2日 实验时间:13:45 - 15:25 实验序号:实验一 ...
- listview-android:打造万能通用适配器(转)
转载:https://blog.csdn.net/q649381130/article/details/51781921: 1.前言 listview作为安卓项目中一个的明星控件,它的适配器的写法是广 ...
- android 使用Canvas画箭头
public class MyCanvas extends View{ private Canvas myCanvas; private Paint myPaint=new Pai ...
- 使用Fiddler 4 调用WebService
Fiddler让我们这些.neter感到非常欣慰, 是用C#写出来的,它包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够 ...
- windows 与 mac socket通信
#include <Winsock2.h> #include <stdio.h> void main() { // 以下的几句都是固定的 WORD wVersionReques ...
- CSS3之3D立方体效果
下面代码可实现3D立方体,比较好理解,就是让每个面先平移到指定位置,然后旋转90度 <!DOCTYPE html> <html lang="en"> < ...
- 三、CSS样式——文本
CSS文本 概念:CSS文本属性可定义文本外观 通过文本属性,可以改变文本的颜色.字符间距.对齐文本.装饰文本.对文本缩进 属性 描述 color 文本颜色 direction 文本方向 line-h ...
- Android 开发 RecyclerView设置间距
实现步骤 首先要创建一个类继承RecyclerView.ItemDecoration 然后重新这个类的getItemOffsets方法,删除方法里的super.getItemOffsets(outRe ...