DirectWrite对齐文本中心

时间:2015-06-18 13:20:01

标签: c++ text directx direct2d directwrite

我正在努力使我必须绘制的文字对齐中心。我使用ID2D1RenderTarget::DrawTextLayout method。问题在于,如果我将文本水平对齐设置为DWRITE_TEXT_ALIGNMENT_LEADING(默认值),则会自动绘制文本,但如果我将此值更改为DWRITE_TEXT_ALIGNMENT_CENTER,则文本会向右移动。

示例字符串是

Internal Amazing 
Scupper

以下是结果(第一个是对齐前导):

enter image description here enter image description here

1 个答案:

答案 0 :(得分:3)

我的评论作为答案(是的,猜对了:)):

  

只是一个简单的猜测:你是否检查了布局框的最大宽度   是不是太广泛了,所以中心会在右边那边结束?

IDWriteTextLayout方法使用的ID2D1RenderTarget::DrawTextLayout定义了布局框的最大宽度,它决定了文本的居中位置。它可以通过界面的methods进行操作(GetMaxWidthSetMaxWidth)。