GDI+ 向一个矩形区域内画文字,如何根据该区域的大小得到文字的字体大小 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public Font (string familyName,float emSize); 参数familyName新 Font 的 FontFamily 的字符串表示形式。 emSize新字体的全身大小(以磅值为单位)。你应该根据画布的大小和字符串的长度得到每个字的象素大小。再将其转换为磅值。 得到每个字体占用的象素后直接使用下面的构造函数即可。制定uint为GraphicsUnit.Pixel;public Font (string familyName,float emSize,GraphicsUnit unit); protected override void OnPaint(PaintEventArgs e) { using (Font font = new Font("宋体", 9)) { Draw(e.Graphics, "中华人民共和国", font); font.Dispose(); }// end using base.OnPaint(e); }protected void Draw(Graphics g,string Text,Font font ) { //获取字符大小 SizeF f = g.MeasureString( Text,font ); int width = (int)f.Width; int height = (int)f.Height; //根据字符大小创建画布 using (Bitmap bmp = new Bitmap(width, height)) { //在画布上创建绘图对象 using (Graphics g_temp = Graphics.FromImage(bmp)) { //创建单色笔刷 using( SolidBrush brush = new SolidBrush( Color.Black ) ) { //在画布上绘制文本 g_temp.DrawString(Text, font, brush, 0, 0); brush.Dispose(); }// g_temp.Dispose(); }// end using //将文字以原来大小的80%绘制到窗体 //g.DrawImage(bmp,new Rectangle(0,0,(int)(width * 0.8),(int)(height * 0.8))); //实际大小 g.DrawImage(bmp, new Rectangle(0, 0, width, height)); bmp.Dispose(); }// end using }// end void kmblack1(black):你的方法倒是可行,就是在绘制比原字大很多的字时,会出现模糊,不过可能指定一个较大的初始字体来稍做调整,不管怎么说,也是一种解决方案,多谢!另外提醒你一下,你在用了 using() 之后,没有必要在 using 块结束时,显示的调用对象的 Dispose() 方法,因为系统会会自动调用 using() 块声明的对象的 Dispose() 方法。 C# ArgumentOutOfRangeException 加载因子需要介于 0.1 和 1.0 之间。 参数名: loadFactor 背包问题 C#操作注册表的小小问题。。。 关于获取<asp:TextBox 的id 紧急问题,百分求助阿 实时动态曲线图 分享一个简单的日志类 大神速来 ★★如何控制 缩小后的图片质量 我们公司要全面转向B/S结构了,不知道哪有C#的入门书可下载??? vs2005自带的用于调试asp.net的webserver怎么会自动开启呢? 这种数据结构应怎么实现最好?
参数
familyName
新 Font 的 FontFamily 的字符串表示形式。 emSize
新字体的全身大小(以磅值为单位)。你应该根据画布的大小和字符串的长度得到每个字的象素大小。再将其转换为磅值。
public Font (string familyName,float emSize,GraphicsUnit unit);
{
using (Font font = new Font("宋体", 9))
{
Draw(e.Graphics, "中华人民共和国", font);
font.Dispose();
}// end using
base.OnPaint(e);
}protected void Draw(Graphics g,string Text,Font font )
{
//获取字符大小
SizeF f = g.MeasureString( Text,font );
int width = (int)f.Width;
int height = (int)f.Height;
//根据字符大小创建画布
using (Bitmap bmp = new Bitmap(width, height))
{
//在画布上创建绘图对象
using (Graphics g_temp = Graphics.FromImage(bmp))
{
//创建单色笔刷
using( SolidBrush brush = new SolidBrush( Color.Black ) )
{
//在画布上绘制文本
g_temp.DrawString(Text, font, brush, 0, 0);
brush.Dispose();
}//
g_temp.Dispose();
}// end using
//将文字以原来大小的80%绘制到窗体
//g.DrawImage(bmp,new Rectangle(0,0,(int)(width * 0.8),(int)(height * 0.8)));
//实际大小
g.DrawImage(bmp, new Rectangle(0, 0, width, height));
bmp.Dispose();
}// end using
}// end void
另外提醒你一下,你在用了 using() 之后,没有必要在 using 块结束时,显示的调用对象的 Dispose() 方法,因为系统会会自动调用 using() 块声明的对象的 Dispose() 方法。