我想将一段string画在textbox的中间,重新写了textbox的onpaint方法.但是怎么都画不到正中间.代码如下
              
              int startPixel_X = Convert.ToInt32(this.Width / 2f - Text * this.Font.Size / 2f);
            int startPixel_Y = Convert.ToInt32(this.Height / 2f - this.Font.Height / 2f);
            e.Graphics.DrawString(showStr, this.Font, new SolidBrush(Text), 0, startPixel_Y);y方向已经没有问题了,确实在中间,但是x好象计算地不对,特别是中文,没有画到最中间,请问谁知道问题在哪儿呢?
非常感谢

解决方案 »

  1.   

    int startPixel_X = Convert.ToInt32(this.Width / 2f - Text * this.Font.Size / 2f);不知道是不是这个,有没有试过?
      

  2.   

    我用的是      int startPixel_X = Convert.ToInt32(this.Width / 2f - Text * this.Font.Size / 2f);
    结果英文好象没怎么偏,中文偏了...晕哦
      

  3.   

    DrawString()方法本身就支持文字上下左右居中。
    RectangleF vRectangleF = new Rectangle(0, 0, Width, Height);
    StringFormat vStringFormat = new StringFormat();
    vStringFormat.FormatFlags |= StringFormatFlags.LineLimit;
    vStringFormat.Alignment = StringAlignment.Center;
    e.Graphics.DrawString(showStr, new Font(Font, FontStyle.Bold),
        Brushes.White, vRectangleF, vStringFormat);
      

  4.   

    StringFormat 的Alignment控制上下的位置 ,LineAlignment 控制左右的位置,都设成StringAlignment.Center就可以居中了。
      

  5.   

    非常感谢zswang和各位弟兄的回复