C++-如何计算相应字体对应的尺寸?

发布于 2017-01-24 21:28:46 字数 132 浏览 1293 评论 2

有这样一个需求,需要按照字号,生成一个相应字号文字的图片,图片的大小和字号有关系,
比如:
12号字体对应的图片尺寸是2020(未计算,只是假设),如何计算出2020(一个字)这个尺寸,考虑中英文,不考虑字间距。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-09-16 08:44:04

因为图片是以像素为单位的,但Windows在显示时以"逻辑英寸"为单位,而所谓的字号其实是以磅来单位的,所以这里要有一个统一的换算公式,由正常的字号转换为逻辑英寸。

下面是公式:

1英寸=72磅(Point)

用GetDeviceCaps(hDC, LOGPIXELSY)可以得到1英寸占多少个像素

所以

字号n所占像素(单位:磅)=GetDeviceCaps(hDC, LOGPIXELSY)*n / 72

偏爱自由 2017-08-26 06:33:39

如果是C++程序可以通过GetTextExtentPoint32函数获取字符串在屏幕上长度。
GetTextExtentPoint32

  函数功能:该函数计算指定的正文字符串的高度和宽度。
  函数原型:BOOL GetTextExtentPoint32(HDC hdc, LPCTSTR lpString, int cbString, LPSIZE lpSize);
  参数:
  hdc:设备环境句柄。
  lpString:指向正文字符串的指针。此字符串不必以结束,因为cbString指定了字符串的长度。
  cbString:指向字符串中的字符数。
  lpSize:指向SIZE结构的指针,该结构中字符串的尺寸将被返回。
  返回值:如果函数调用成功,返回值是非零值,如果函数调用失败,返回值是0。
  Windows NT:若想获得更多的错误信息,请调用GetLastError函数。
http://msdn.microsoft.com/en-us/library/dd144938%28VS.85%29.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文