基本业务逻辑如下:
已经知道一个Bitmap对象的大小,和一个字符串,以及字符串的字体等信息,现在需要将字符串一DrawString的方式画在这Bitmap上,如何根据字符串的长度、字体,以及Bitmap的大小,将字符串分割成一个二维的字符串数组,以实现自动换行功能以及如果一个BitMap显示不开及可画成多张图片。(不知道描述的清楚不)例如:
已经知道一个Bitmap对象的宽=128,高=64,和一个字符串str = "今天小弟又来论坛请教了,还请大侠们多多指教!" 字体为宋体9号字,求将这个字符串分割成一个二维的字符串数组(String[图片数量][行数]),以保证能够在Bitmap里完全显示字符串的值。
格式:
public string[][] subString(int width,int hight,string str,Font f)
{
.......请高人给填个方法体
}参数:
int width Bitmap 图片的宽度
int hight Bitmap 图片的高度
string str 待分割的字符串
Font f 字符串的字体
返回值
String [可分割成的图片数量][每张图片的行数] s
已经知道一个Bitmap对象的大小,和一个字符串,以及字符串的字体等信息,现在需要将字符串一DrawString的方式画在这Bitmap上,如何根据字符串的长度、字体,以及Bitmap的大小,将字符串分割成一个二维的字符串数组,以实现自动换行功能以及如果一个BitMap显示不开及可画成多张图片。(不知道描述的清楚不)例如:
已经知道一个Bitmap对象的宽=128,高=64,和一个字符串str = "今天小弟又来论坛请教了,还请大侠们多多指教!" 字体为宋体9号字,求将这个字符串分割成一个二维的字符串数组(String[图片数量][行数]),以保证能够在Bitmap里完全显示字符串的值。
格式:
public string[][] subString(int width,int hight,string str,Font f)
{
.......请高人给填个方法体
}参数:
int width Bitmap 图片的宽度
int hight Bitmap 图片的高度
string str 待分割的字符串
Font f 字符串的字体
返回值
String [可分割成的图片数量][每张图片的行数] s
就是对于一个大的矩型,最多可以容纳多少个小矩型但是问题是大矩形的面积是不固定的(Bitmap对象的大小不定),小矩形的面积也是不固定的(字符串可以由于字体或者字号等因素改变大小)。
目前可以只针对“宋体”“黑体” 两种字体,可以加粗,不可以使用斜体,字号也只要能从小五号到初号就可以了,有谁能帮忙写写啊,有个思路也行!
分不够可以再加
你可以先预先分割一个字符串,然后调用函数计算一下,如果长了就减少字符,如果短了就增加字符,调整好分割长度就可以了。
Font f=new System.Drawing.Font("宋体", 9F);//, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
Graphics g=this.CreateGraphics();
SizeF sf= g.MeasureString(str,f);
//128/sf.Width 一行几个字
// 64/sf.Height 一张几行
//这里自己写吧 因为有剩余宽度或高度的问题,楼长并为说明
//还有一张放不下1个字的问题
//谁有空添全吧