我想对齐居中我要画的文本。我使用ID2D1RenderTarget::DrawTextLayout method。问题是,如果我将文本水平对齐设置为DWRITE_TEXT_ALIGNMENT_LEADING
(默认值),则会精确绘制文本,但如果将此值更改为DWRITE_TEXT_ALIGNMENT_CENTER
,文本会右移。DirectWrite对齐文本中心
的例子字符串是
Internal Amazing
Scupper
以下是结果(第一次是对准领先):
我想对齐居中我要画的文本。我使用ID2D1RenderTarget::DrawTextLayout method。问题是,如果我将文本水平对齐设置为DWRITE_TEXT_ALIGNMENT_LEADING
(默认值),则会精确绘制文本,但如果将此值更改为DWRITE_TEXT_ALIGNMENT_CENTER
,文本会右移。DirectWrite对齐文本中心
的例子字符串是
Internal Amazing
Scupper
以下是结果(第一次是对准领先):
我作为一个答案评论(是啊,猜对了:) ):
只是一个快速猜测:你有没有检查你的布局框 的最大宽度是不是太宽,所以中心会在那里结束?
通过ID2D1RenderTarget::DrawTextLayout
方法中使用的定义IDWriteTextLayout
布局框,其确定其中文本居中的最大宽度。它可以通过界面的methods(GetMaxWidth和SetMaxWidth)进行操纵。
此外,宽度是您第一次调用CreateTextLayout时的参数。 –
只是一个快速猜测:你检查过最大宽度你的布局框不是太宽,所以中心会在右边结束? – Gnietschow
@Gnietschow如何设置我的布局框的最大尺寸等于包含我的文本的矩形区域?也就是说,我怎样才能获得我的文本区域的边界? – Nick
@Gnietschow顺便说一句,您的评论是正确的,请写下您的答案。 – Nick