您当前的位置:首页 > 淘宝百科

measurestring(C#中怎样得到一个字符串的宽度和高度呢有没有函数阿)

时间:2023-01-30 17:30:44

本文目录

  • C#中怎样得到一个字符串的宽度和高度呢有没有函数阿
  • 如何计算字符串的宽度
  • .net怎么样截取字符串 能按照字符的长度来截取 不按照字符的个数 有什么自带的方法吗 不用string.substrin
  • c#中如何实现窗体名称的居中显示
  • 滚动字在C#中如何实现
  • asp.net C#中使用DrawString绘制文本时怎样使文本居中或右对齐
  • C#中怎么获得一个字符的像素宽度
  • C#中如何获取一个字体的宽度值(像素单位)

C#中怎样得到一个字符串的宽度和高度呢有没有函数阿

举个例子:给定字符串s,用Graphics的MeasureString获取高度宽度sizeF,并在一个给定的起点显示以sizeF为高度宽度的矩形大小和字符串sstrings=“an English string and 一个中文字符串“;Graphics g=this.CreateGraphics();g.PageUnit=GraphicsUnit.Pixel;g.SmoothingMode=SmoothingMode.HighQuality;StringFormat sf=newStringFormat();sf.FormatFlags=StringFormatFlags.MeasureTrailingSpaces;SizeF sizeF=g.MeasureString(s,this.Font,500, sf);g.DrawRectangle(Pens.Red,newRectangle(100,400, Convert.ToInt32(sizeF.Width), Convert.ToInt32(sizeF.Height)));g.DrawString(s,this.Font,newSolidBrush(Color.Green),100,400);以100,400坐标位奇点绘制sizeF大小的矩形 和 字符串 改sizeF是测量该字符串得到的。效果如下:(没处理显示质量 这个不是重点)注意’g’和’串’说明Gdi+的MeasureString跟CDC的GetTextExtent完全不一样 GDI+在字符串四周添加一些长度,以适应字符串绝对可以被测量得到的SizeF包裹住,而且在末尾添加的更多空白,大概是想包裹住文字单击时的鼠标状态。类似上面的代码,使用TextRender的MeasureText精确获得包裹字符串的区域,效果如下:区别在于字符串末尾增宽 和 对英文字符下部的增宽处理。

如何计算字符串的宽度

通过Graphics对象的MeasureString方法可以获取字符串的大小,如下:Graphics graphics = CreateGraphics(); SizeF sizeF = graphics.MeasureString(字符串, new Font(“宋体“, 9)); MessageBox.Show(string.Format(“字体宽度:{0},高度:{1}“, sizeF.Width, sizeF.Height)); graphics.Dispose();

.net怎么样截取字符串 能按照字符的长度来截取 不按照字符的个数 有什么自带的方法吗 不用string.substrin

我知道你的意思,按“长度“取字符,但是这样很复杂的,因为字符的宽度是和字符所使用的字符集有关,在这个基础上获取宽度,和单个字符的宽度,然后在落实到substring的字符个数上转一个吧1、 使用g.MeasureString()获得使用MeasureString测量出来的字符宽度,总是比实际宽度大一些,而且随着字符的长度增大,貌似实际宽度和测量宽度的差距也越来越大了。查了一下MSDN,找到了下面这个理由:MeasureString 方法旨在与个别字符串一起使用,它在字符串前后包括少量额外的空格供突出的标志符号使用。 string str; str = “大“; Font f = new Font(“SimSun“, 7F, System.Drawing.FontStyle.Regular); Graphics g = this.CreateGraphics(); //单位为mm g.PageUnit = GraphicsUnit.Millimeter; SizeF sim = g.MeasureString(str, f);2、使用TextRenderer.MeasureText获得,提供使用指定尺寸创建文本初始边框时,使用指定的设备上下文、字体和格式说明所绘制的指定文本的尺寸(以像素为单位)。 private void MeasureText(PaintEventArgs e) { string str; str = “大家好“; Font f = new Font(“SimSun“, 7F, System.Drawing.FontStyle.Regular); Size sif = TextRenderer.MeasureText(e.Graphics, str, f, new Size(0, 0), TextFormatFlags.NoPadding); MessageBox.Show((sif.Width / pdi).ToString()); } private void print(object sender, PaintEventArgs e) { MeasureText(e); }

c#中如何实现窗体名称的居中显示

  • 窗体名称是个很纠结的事情,正常情况一般是不去更改它的。这都怪微软。。。在win8.1的系统里,winform程序的title是自动居中。。

  • 所以在win8.1之下 就没那么幸运了!~~所以,只能用一中比较极端的办法去实现:

    private void ChangeTitlePosition()        {            Graphics g = this.CreateGraphics();            Double startingPoint = (this.Width / 2) - (g.MeasureString(this.Text.Trim(), this.Font).Width / 2);            Double ws = g.MeasureString(“*“, this.Font).Width;            String tmp = “ “;            Double tw = 0;            while ((tw + ws) 《 startingPoint)            {                tmp += “*“;                tw += ws;            }            this.Text = tmp.Replace(’*’, ’ ’) + this.Text.Trim();        }

  • 注意这段代码,要放到Form和Resize事件中。。因为Form是在窗体启动的时候,而Resize是在更改窗体大小的时候去弄!

  • 结果截图

  • 祝你好运。加油。

  • 滚动字在C#中如何实现

    需要用到Graphics.DrawString方法. Graphics.DrawString (String s, Font font, Brush brush, PointF point) 在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串。

    参数说明:

    s 要绘制的字符串。font 它定义字符串的文本格式。brush 它确定所绘制文本的颜色和纹理。point 结构,它指定所绘制文本的左上角。

    其中,要用到的就是point函数,通过控制它的X或Y参数来控制文字的偏移量.下面以水平滚动字幕为例.

    private  Label label = new Label();  public string text=“csdn baihe_591“;  private void FrmShow_Load(object sender, EventArgs e)  {            this.label.Location = new Point(149, 13);  this.label.Size = new Size(134, 16);  this.Controls.Add (label);           this.label.Text = ““;  this.timer1.Enabled = true;  this.timer1.Interval = 500;   p = new PointF(this.label.Size.Width, 0);  }    PointF p;  Font f = new Font(“宋体“, 10);  Color c = Color.White;  string temp;  private void timer1_Tick(object sender, EventArgs e)  { Graphics g = this.label.CreateGraphics();  SizeF s = new SizeF();  s = g.MeasureString(text, f);//测量文字长度  Brush brush = Brushes.Black;             g.Clear(c);//清除背景 if (temp != text)//文字改变时,重新显示  {  p = new PointF(this.label.Size.Width, 0);  temp = text;  }  else  p = new PointF(p.X - 10, 0);//每次偏移10  if (p.X 《= -s.Width)  p = new PointF(this.label.Size.Width, 0);  g.DrawString(text, f, brush, p);    }

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

    你的代码看著很累自己算下起点,用 图片宽度-“文字长度” 作为X座标的起点,用 (图片高度-“文字长度”)/2 作为X座标的起点,,不要用下面的 new PointF(0, 0),g.DrawString(_ShowName, stringFont, new SolidBrush(Color.Black), new PointF(0, 0), format);

    C#中怎么获得一个字符的像素宽度

    Graphics graphics = CreateGraphics(); SizeF sizeF = graphics.MeasureString(textBox1.Text, new Font(“宋体“, 9)); MessageBox.Show(string.Format(“字体宽度:{0},高度:{1}“, sizeF.Width, sizeF.Height)); graphics.Dispose();使用g.MeasureString()获得

    C#中如何获取一个字体的宽度值(像素单位)

    是不是这个意思 private void button1_Click(object sender, EventArgs e) { Graphics g = this.CreateGraphics(); SizeF sizeF = g.MeasureString(“A“, new Font(“宋体“, 9)); MessageBox.Show(sizeF.Width + “ “ + sizeF.Height); g.Dispose(); }

    字符串

    最新文章