windows – 如何在ClearType打开时获取真实文本尺寸?

我有一个使用GDI的Win32 GUI应用程序.它需要在指定坐标处的位图上绘制文本,然后将其擦除并替换为原始位图.

我按如下方式进行:

>选择字体(GetStockObject(DEFAULT_GUI_FONT)),刷,其他东西进入设备上下文
>调用GetTextExtentPoint32()来计算文本的大小
>现在有文本起点我可以计算预期的文本矩形并存储它
>为具有相同起点和相同文本的相同设备上下文调用TextOut()

然后恢复商店矩形的位图.

当ClearType抗锯齿关闭时,它工作正常.但是,GetTextExtentPoint32()返回的大小上的ClearType略小于调用TextOut()时文本实际占用的大小.因此,当我稍后恢复原始位图时,文本的一些小条纹仍然存在,并且我有文物.

如果不禁用ClearType,有没有解决这个问题的方法?

最佳答案 您也可以使用DT_CALCRECT尝试
DrawText来计算字符串大小.也许它效果更好.

然后你可以在一个矩形内写入带有DrawText的字符串,其大小等于你用DT_CALCRECT得到的大小,它将剪切文本,以防它有点大.

点赞