measurestring(C#中怎样得到一个字符串的宽度和高度呢有没有函数阿)
本文目录
- 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(); }
- 1bat的大数据(BAT的大数据来源)
- 2三星s8屏幕上端2(三星s8屏幕上端2个按键)
- 3三星屏幕坏了如何导出(三星屏幕摔坏了如何导出数据么)
- 4红米3x怎么关闭自动更新(红米k40s怎么关闭自动更新)
- 5微信上防止app自动下载软件怎么办(微信上防止app自动下载软件怎么办啊)
- 6押镖多少钱(押镖一个月有多少储备金)
- 7瑞星个人防火墙胡功能(瑞星个人防火墙协议类型有哪些)
- 8cf现在等级是多少(cf等级2020最新)
- 9老滑头多少条鱼(钓鱼老滑头有什么用)
- 10WPS自动调整语法(wps如何修改语法)
- 11dell控制面板防火墙(dell的防火墙怎么关闭)
- 12丑女技能升多少(丑女技能需要满级吗)
- 13智能家居系统怎么样(智能家居系统好吗)
- 14戴尔屏幕(戴尔屏幕闪烁)
- 15y85屏幕信息(vivoy85息屏显示时间怎么设置)
- 16魅蓝note3屏幕出现方格(魅蓝note屏幕竖条纹)
- 17v8手指按屏幕(触屏手指)
- 18金为液晶广告机(液晶广告机lb420)
- 19三星显示器怎么校色(三星显示器 调色)
- 20hkc显示器dvi音频(hkc显示器有音响么)
- 21康佳液晶智能电视机(康佳液晶智能电视机怎么样)
- 22做液晶画板电脑(做液晶画板电脑怎么操作)
- 23液晶屏极化现象原理(液晶屏极化现象原理是什么)
- 24企业网络安全防火墙(企业网络防护)
- 256splus黑屏屏幕不亮(苹果6s plus屏幕突然黑屏)
- 26充电导致屏幕失灵(充电导致屏幕失灵怎么办)
- 27超极本屏幕旋转(笔记本电脑屏幕旋转,怎么转过来?)
- 28igmp防火墙(防火墙配置ipv6)
- 29荣耀王者多少经验(王者荣耀经验多少一级)
- 30lol老将还剩多少(qg老将)