SolidBrush fontBrush = new SolidBrush(fc);
StringFormat stringFormat = new StringFormat();
stringFormat.Alignment = StringAlignment.Near;
g.Clip = new Region(new RectangleF(0, 0, 128, 16));
g.PageUnit = GraphicsUnit.Display;
g.DrawString(str, f, fontBrush, new RectangleF(x,y,w,h),stringFormat);
这样画的,字体是宋体12号,应该是宽度16个像素点的,我画完之后放在一个128宽的PictureBox里
写6个汉字的时候发现最后一个有一点现实不出来,然后看了一下是第一个字前面空了4个像素点,谁能告诉我怎么能让前面不空这4个点
x,y都是0,谁也别告诉我把x设成-4啊,因为字体不一定

解决方案 »

  1.   

    使用Graphics.MeasureString 来结算需要多宽把.
      

  2.   

    e.Graphics.MeasureString("一二三四五六七八", this.Font).Width=137.1406 并非 128
    Font为12号字
    看了一下是第一个字前面空了4个像素点,谁能告诉我怎么能让前面不空这4个点
    ------------------------------------------------------------------这要看这个字在造时,从多少个像素开始“空”。
      

  3.   

    发图http://topic.csdn.net/u/20090409/15/dc73485a-3ca6-4c80-bdcd-24e42f4af932.html