gpt4 book ai didi

c# - 为什么这里的 TextRenderer.MeasureText 不准确?

转载 作者:行者123 更新时间:2023-12-02 12:22:46 39 4
gpt4 key购买 nike

我试图在我的 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/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com