C#中使用DrawString绘制文本时怎样使文本居中或右对齐

sahdolla 2014-01-17 01:04:15

asp.net C#中使用DrawString绘制文本时怎样使文本居中或右对齐


string _FontName = "UKK TZA1";
int _FontSize = 30;
string txt = TextBox1.Text;
txt = HtmlCode(TextBox1.Text);
string _ShowName = txt;

Bitmap objBitmap = null;
Graphics g = null;

Font stringFont = new Font(_FontName, _FontSize, FontStyle.Bold);
//StringFormat stringFormat = new StringFormat();
//stringFormat.FormatFlags = StringFormatFlags.NoWrap;
//stringFormat.Alignment = StringAlignment.Center;
try
{
StringFormat format = new StringFormat(StringFormatFlags.DirectionRightToLeft);

objBitmap = new Bitmap(1, 1);
g = Graphics.FromImage(objBitmap);
SizeF stringSize = g.MeasureString(_ShowName, stringFont, 500, format);
int nWidth = (int)stringSize.Width;
int nHeight = (int)stringSize.Height;

g.Dispose();
objBitmap.Dispose();

objBitmap = new Bitmap(nWidth, nHeight);
g = Graphics.FromImage(objBitmap);
g.FillRectangle(new SolidBrush(Color.LightSkyBlue), new Rectangle(0, 0, nWidth, nHeight));
g.TextRenderingHint = TextRenderingHint.AntiAlias;
g.DrawString(_ShowName, stringFont, new SolidBrush(Color.Black), new PointF(0, 0), format);
objBitmap.Save(@"d:\test.gif", ImageFormat.Gif);
}
catch (Exception ee)
{
Response.Write(ee.ToString());
}
finally
{
if (null != g) g.Dispose();
if (null != objBitmap) objBitmap.Dispose();
Response.End();
}


这是我的代码,正常运行,但结果绘出来的文字总是 左对齐,有什么办法使文字右对齐或居中?
...全文
6937 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dylike 2014-01-18
  • 打赏
  • 举报
回复
除使用上述对齐方式外 g.DrawString(_ShowName, stringFont, new SolidBrush(Color.Black), new PointF(0, 0), format); 红字部分要使用矩形,比如替换成new rectangle(0,0,背景图.width,背景图.height) 这使得StringFormat限定在这个矩形内.
卧_槽 2014-01-17
  • 打赏
  • 举报
回复
你需要熟读msdn
sahdolla 2014-01-17
  • 打赏
  • 举报
回复
引用 2 楼 gomoku 的回复:
StringFormat.LineAlignment = StringAlignment.Center; 水平对齐 = 居中 StringAlignment.Far; 对右
这样设置的话图片上没有字母了,只显示背景颜色。
gomoku 2014-01-17
  • 打赏
  • 举报
回复
Point.Empty, 或new Point(0,0)
sahdolla 2014-01-17
  • 打赏
  • 举报
回复
引用 3 楼 gomoku 的回复:

format.LineAlignment = StringAlignment.Center;  // 更正: 垂直居中
format.Alignment = StringAlignment.Center;      // 水平居中

RectangleF 排版框 = new Rectangle(Point.Zero, new Size(nWidth, nHeight));
g.DrawString(_ShowName, stringFont, Brushes.Black, 排版框, format);
出现了一个错误提示:Point.Zero, ponit不包含zero的定义。
gomoku 2014-01-17
  • 打赏
  • 举报
回复

format.LineAlignment = StringAlignment.Center;  // 更正: 垂直居中
format.Alignment = StringAlignment.Center;      // 水平居中

RectangleF 排版框 = new Rectangle(Point.Zero, new Size(nWidth, nHeight));
g.DrawString(_ShowName, stringFont, Brushes.Black, 排版框, format);
gomoku 2014-01-17
  • 打赏
  • 举报
回复
StringFormat.LineAlignment = StringAlignment.Center; 水平对齐 = 居中 StringAlignment.Far; 对右
Regan-lin 2014-01-17
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/300201991

110,569

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧