问题标签 [measurestring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
189 浏览

winforms - 为什么 Graphics.MeasureString 测量阿拉伯字符串不正确?

我有一个阿拉伯字符串,它是阿拉伯字符串和“:100”连接的结果。该字符串的测量和绘制不正确。为什么?

这个问题有可能是由这个特定的字体引起的吗?

0 投票
2 回答
219 浏览

c# - C# 查询 MeasureString 时标签是否忽略空格?

我一直试图在自动收报机磁带类型应用程序中查找错误。希望这个背景不会太长。

背景: 自动收报机需要从右开始显示字符,然后向左滚动。由于应用程序是 Windows 窗体并且需要透明的背景颜色,我需要使用标签(或者我需要使用标签吗?)。使用不同的控件时遇到问题。控件大小和字体未知,必须在运行时计算。

自动收报机的主要场景首先是我们需要在显示字符串左侧填充的开始。

我们去掉前面的字符并添加字符的中间仍然需要显示。

应该 PAD 向右移动最后一个字符很长直到最后一个字符的末端都在左边。然后消息就完成了。

我有两个与这个问题有关的功能:

1) 使用控件和字体计算显示文本的大小。

2) 应用程序的核心是返回显示文本的函数。

问题:

开始和中间的场景完美地工作,如果我用空格填充,结束就不起作用,但如果我使用任何其他可见字符,如“。” 有用。

尺寸功能:

显示文字功能:

问题:

在标签上执行以下功能并且文本后面有空格时,为什么它返回相同的大小?

SizeF size = g.MeasureString(text, tstLabel.Font);

0 投票
1 回答
341 浏览

c# - 如何计算一个数字的正确宽度(以像素为单位)?

我有一个自定义控件,将来可能会有用户自定义的字体(缩放已经实现)。我必须在两位数下填充一个矩形,形成一个以 10 为基数的数字。我对零、一个或两个数字有不同的颜色。

使用字体 {Name = Microsoft Sans SerifSize= 16} 和以下Graphics.MeasureString方法调用:

我得到:

  • “00”的大小是{Width = 31.5486088Height = 26.8124962}
  • “0”的大小是{Width = 19.3298588Height = 26.8124962}

“0”的宽度比“00”的一半大得多。

我知道方法Graphics.MeasureString,它有很多重载,我也知道 StringFormat 类。如何正确计算“0”字符的宽度?

因为字体将是用户可自定义的,所以我不想使用等宽字体来解决问题。

如果我使用以下调用:

“0”的宽度似乎是“00”宽度的一半,但是用较小的字体大小绘制时数字重叠:

截屏

更新:在 UserControl 的 OnPaint 方法中,我有以下代码:

字体是{Name = "Microsoft Sans Serif" Size=25}。运行程序时,这是可见的:

截图 2

我想让数字以蓝色矩形为中心。矩形在 UserControl 中必须尽可能大,但也要​​为 UserControl 的高度留出一定百分比的空间。字体应该适应矩形。

0 投票
0 回答
29 浏览

vb.net - 缩放前的 MeasureString 是相同的结果

我想将文本添加到图像。我制作了一个文本框来输入一些文本,然后这些文本将被绘制到图形对象。但是字体大小不正确。如果通过放大/缩小来缩放 Drawing.Graphics。所以我尝试使用 MeasureString() 函数来正确获取字体大小。

但是widthBeforewidthAfter是相同的值。为什么?以及如何使字体大小与文本框中的显示相同?