日期:2014-05-19  浏览次数:20880 次

如何将指定的文字,显示为图片?
在图片上显示指定的文字,这个不难,因为图片的长宽都是固定的;
将长度未定的文字,显示为图片,怎么做呢?谢谢。
1、难点在于图片的字数未定,所生存的图片的长尺寸要根据文字的多少来定;
2、而且要求是每次显示临时生成一次,而不是生存了固定的图片。
3、就像某些论坛上,显示每次登录者地区、IP地址的那个东东。

------解决方案--------------------
用于测量长度跟图片比较
int PhotoWidth=500;
int[] sizes = new int[] {10, 8, 6, 4 };
Font crFont = null;
SizeF crSize = new SizeF();
string Lenstr= "Abcdefga;dfjka;sdkfja;sdkfja ";
for (int ig = 0; ig < 4; ig++)
{
crFont = new Font( "arial ", sizes[ig], FontStyle.Bold);
crSize = newPhoto.MeasureString(Lenstr, crFont);
if ((ushort)crSize.Width < (ushort)PhotoWidth)
break;
}
------解决方案--------------------
Private Function DrawIPString(ByVal Ip As String) As Image
Dim bit As Bitmap = New Bitmap(1, 1)
Dim gr As Graphics = Graphics.FromImage(bit)
Dim font As New Font( "宋体 ", 9, FontStyle.Regular)
Dim format As New StringFormat(StringFormatFlags.NoWrap)
Dim StrSize As SizeF = gr.MeasureString(Ip, font)
bit = New Bitmap(CInt(StrSize.Width), CInt(StrSize.Height))
gr = Graphics.FromImage(bit)
gr.Clear(Color.White)
gr.DrawString(Ip, font, New SolidBrush(Color.Black), 0, 0, format)
gr.Dispose()
Return bit
End Function