- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在我的 TextBox 子类中绘制 80 个字符的边距。这是我的代码:
class FooTextBox : TextBox
{
...
void UpdateMarginPosition()
{
using (Graphics graphics = CreateGraphics()) {
int charWidth = TextRenderer.MeasureText(graphics, "M", Font,
ClientSize, TextFormatFlags.NoPadding).Width;
const int LeftMargin = 2;
margin.Left = charWidth * 80 + LeftMargin;
}
}
}
这对于特定尺寸的某些字体效果很好(例如,尺寸为 10 的 Courier New):
但是对于其他字体来说,这有点不准确。例如,以下是 Consolas 大小为 12 的屏幕截图:
正如您所看到的,该线穿过 0,而实际上它应该位于 0 的右侧。
编辑:
我忘了提及“margin”是一个 WinForms.Label。
最佳答案
改用Graphics.MeasureString
。结果是 SizeF
,而不是像 TextRenderer 的方法返回的 Size
。
关于c# - 为什么这里的 TextRenderer.MeasureText 不准确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7361156/
我一直在研究自定义控件,但我遇到了一个问题,TextRenderer 的表现有点出乎意料。在我的 OnPaint 事件中,我将转换应用于 Graphics 对象以补偿滚动位置,如下所示: e.Grap
我正在尝试使用 TextRenderer 类测量给定特定字体的字符串的大小。尽管我尝试用 3 种不同的方法(Graphics.MeasureCharacterRanges、Graphics.Measu
我在绘制自定义控件时使用缩放和转换我的图形对象,以便应用缩放和滚动。我使用以下内容: Matrix mx = new Matrix(); mx.Scal
嗨,我正在使用 TextRenderer.MeasureText() 方法来测量给定字体的文本宽度。我使用 Arial Unicode MS 字体来测量宽度,这是一种包含所有语言字符的 Unicode
调用 TextRenderer.MeasureText 如下: TextRenderer.MeasureText(myControl.Text, myControl.Font); 并将结果与控件的
我有一个长字符串(约 10 万个字符)。我需要知道这个字符串的长度。我叫 Size s = TextRenderer.MeasureText(graphics, text, font); 但它返回宽度
由于在我的应用程序的某些地方缺少 Graphics 对象,我决定使用 TextRenderer 类。令人惊讶的是,它为测量文本增加了很多边距。例如: private void button1_Clic
我已经使用 TextRenderer 来测量字符串的长度,因此可以适本地调整控件的大小。 WPF 中是否有等效项,或者我可以简单地使用 TextRendered.MeasureString? 最佳答案
我正在尝试使用 TextRenderer(因为这有利于使用 Graphics.DrawString)将一些文本绘制到 Bitmap,但是它正在产生一些非常不良的影响。 示例代码 using (Bitm
System.Windows.Forms.TextRenderer.DrawText 方法呈现带或不带左右填充的格式化文本,具体取决于 flags 参数的值: TextFormatFlags.NoPa
我试图在我的 TextBox 子类中绘制 80 个字符的边距。这是我的代码: class FooTextBox : TextBox { ... void UpdateMarginPos
CE(.net 精简版)是否支持 TextRenderer? 最佳答案 没有。使用 Graphics.DrawString相反。 TextRenderer 是 GDI+ 缺陷的解决方法,CF 不使用
我想在给定一定宽度的可用 Canvas 的情况下测量文本的高度。我传递的文本很长,我知道会换行。为此,我调用以下方法: using System.Windows.Forms; ... string t
如果我给 TextRenderer.MeasureText 一些要测量的文本和要使用的宽度,它将返回显示该文本所需的高度。 private static int CalculateHeight(str
我使用以下代码在位图上绘制文本 GraphicsPath pth = new GraphicsPath(); var style = (int)myfont.Style; pth.AddString(
正如我发布的 here ,我能够在我的 WindowsForm 上显示一些特殊字体但是我无法将这种字体保存为图片。问题是 Graphic.DrawString() 无法显示所有或特殊字体。 Windo
我对这两种方法感到困惑。 我的理解是 Graphics.DrawString() 使用 GDI+ 并且是基于图形的实现,而 TextRenderer.DrawString() 使用 GDI 并允许大范
因为我已经尝试使用 Graphics.DrawString() 的平滑和渲染的每种组合来绘制字符串,所以我认为文本渲染器会更好地绘制我的字符串,但我认为是错误的. 它应该是这样的: 这是它的样子: 这
如果我使用 TextRenderer.DrawText() 并使用 OnPaintBackground 中提供的 Graphics 对象,我的文本看起来很完美。如果我创建自己的 Bitmap 并使用从
public static void DrawText(IDeviceContext dc, string text, Font font, Point pt, Color foreColor, Te
我是一名优秀的程序员,十分优秀!