- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
鉴于我已经知道宽度,我需要计算字符串的高度。
例如,如果有一个字符串,如“Curabitur semper ipsum semper nulla dictum,vel vulputate elit fringilla。Donec nec placerat purus,ut blandit lectus。Maecenas non molestie nulla。Class aptent taciti sociosqu。”
我可以使用下面的代码来计算该字符串的单行宽度/高度。
using (Graphics gfx = Graphics.FromImage(new Bitmap(1, 1)))
{
System.Drawing.Font f = new System.Drawing.Font(
FontFamily.GenericSansSerif, 10, FontStyle.Regular);
SizeF bounds = gfx.MeasureString(
message, f, new PointF(0, 0),
new StringFormat(StringFormatFlags.MeasureTrailingSpaces));
}
但是,我想做的是计算该字符串的高度(如果它在 200 像素的 div 内),考虑换行。
起初我认为它是用于派生 Graphics 对象的图像宽度的函数。
using (Graphics gfx = Graphics.FromImage(new Bitmap(500, 200)))
这没有帮助,得到了相同的单线尺寸。
有谁知道获得此信息的其他技巧吗?
最佳答案
given that I already know the width
然后您当然必须将宽度告诉 MeasureString(),请注意您从未在代码中这样做。 MeasureString() 有 several overloads ,您需要使用一个采用 SizeF 的函数。例如,传递 new SizeF(500, int.MaxValue)
。您将返回的 SizeF 的宽度仍为 500,但会告诉您要查找的高度。
顺便说一句,当您绘制到打印机时,只使用 DrawString/MeasureString。对于呈现在屏幕上的文本,您应该改用 TextRenderer。
关于c# - Graphics MeasureString 方法是否/可以考虑容器的宽度和换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20843938/
我在C ++中使用GDI +。 (此问题也可能在C#中存在)。 我注意到,每当我调用Graphics :: MeasureString()或Graphics :: DrawString()时,该字符串
如果我使用下面的文本宽度计算大小,它会给我说 500 intWidth = (int)objGraphics.MeasureString(String.concat(sImageText1, sIma
我们使用 Measurestring() 根据文本的长度计算大小。对于不同的屏幕分辨率,MeasureString() 给出不同的大小。 Graphics g; Size size = g.Meas
我们正在使用 SharpDX 开发 Windows 8 Metro 应用程序.现在我们必须在 Rectangle 中声明一组字符串.为此,我们尝试使用 SharpDX.DrawingSizeF 找出字
我正在使用一个函数来调用要在区域内呈现的一段文本。该函数的基本工作原理是: Dim measureSize as Size Do myFont = new Font(myFont.Name,
我正在尝试完成一个可以在屏幕上布局文本的代码。以下 C# 代码放置在一个否则为空的 Windows 窗体的 Paint 事件处理程序中就是一个示例: string[] s = new string[]
这个问题在这里已经有了答案: GDI+ MeasureString() is incorrectly trimming text (1 个回答) 关闭 7 年前。 我一直在尝试查找自动收报机磁带类型
我使用 Graphics.MeasureString 来计算文本的大小。EG:10 像素 = 7.5 点。 我的问题:大小是根据Graphics.MeasureString点值还是像素值计算出来的?
我正在使用 C# 中的 System.Drawing 库来测量字符串的大小: SizeF size = gfx.MeasureString("Hello", myFont); 但是,这会返回文本周围有
我注意到 Graphics.MeasureString 在不同分辨率下的奇怪行为。 对于默认分辨率 (96x96),我测试的不同字体大小之间存在线性关系。 但是,如果我将它提高到 512 x 512,
鉴于我已经知道宽度,我需要计算字符串的高度。 例如,如果有一个字符串,如“Curabitur semper ipsum semper nulla dictum,vel vulputate elit f
请看我的代码: Graphics grfx = Graphics.FromImage(new Bitmap(1, 1)); System.Drawing.Font f = new System.Dra
为什么我必须将 MeasureString() 结果宽度增加 21%size.Width = size.Width * 1.21f;在 DrawString() 中避免自动换行? 我需要一个解决方案来
我正在生成收据并使用 Graphics 对象调用 DrawString 方法来打印出所需的文本。 graphics.DrawString(string, font, brush, widthOfPag
我一直在尝试在 C# 中找到一种方法来测量字符串的大小。 standard method在 Win32 中测量字符串是使用 GetTextExtent。真正的目标是找到字体字符的平均宽度和高度。查找字
这不是一个舍入问题。差异 ~ 5+ 像素。 测试用例字符串:“”MACD (26,12,9) -0.000016” e.Graphics.MeasureString("MACD (26,12,9) -
当文本换行到固定宽度时,为什么 MeasureString 返回不正确的文本字符串高度? var labelFont = new Font("Courier New", 11, FontStyle.B
我有一个重写的 (WinForms) MemoEdit 控件(不幸的是我不能给你代码)。如果我输入超过 32000 个字符,它会引发错误“GDI+ 中发生一般性错误”我以为我的控件中有错误(异常),但
我是一名优秀的程序员,十分优秀!