有没有办法从文本需要的像素长度计算所需的字体大小?

时间:2016-10-21 18:35:01

标签: powershell fonts bitmap

我正在写一个有趣的项目,其中我在图像上放置文本。挑战在于,除了字体之外,其他所有内容都是可变的,除了字体系列,现在是Verdana。

所以我得到一张未知大小的图像,我得到了一串未知的单词。目前,我将字符串分成3个单独的字符串,并将它们叠加在原始图像上的位图中,并且我已经知道字体大小为imgHeight / 25。这通常有效,除非我有一个非常长的字符串,在这种情况下,字符串的结尾字会被切断。

从我到完成的最短距离是计算并确定字体大小是图像宽度的特定比率。所以我对这种解决方案的问题是:如何计算给定字符串在给定字体中的长度(以像素为单位)?从那里,我可以反转它以从所需的像素长度计算所需的字体。

另一种选择是将文本包装在给定大小的框中,但我可能仍然会遇到类似的问题,而且我还没弄清楚如何做到这一点。

欢迎提出其他方法的建议!

1 个答案:

答案 0 :(得分:1)

您可以使用Windows窗体TextRenderer进行计算吗?

Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName System.Windows.Forms
$string = 'Example Text.'
$font = New-Object System.Drawing.Font('Verdana', 12, [System.Drawing.FontStyle]'Bold, Italic')
$size = [System.Windows.Forms.TextRenderer]::MeasureText($string, $font)
$size.Width