2015-06-18 179 views
0

我想对齐居中我要画的文本。我使用ID2D1RenderTarget::DrawTextLayout method。问题是,如果我将文本水平对齐设置为DWRITE_TEXT_ALIGNMENT_LEADING(默认值),则会精确绘制文本,但如果将此值更改为DWRITE_TEXT_ALIGNMENT_CENTER,文本会右移。DirectWrite对齐文本中心

的例子字符串是

Internal Amazing 
Scupper 

以下是结果(第一次是对准领先):

enter image description here enter image description here

+2

只是一个快速猜测:你检查过最大宽度你的布局框不是太宽,所以中心会在右边结束? – Gnietschow

+0

@Gnietschow如何设置我的布局框的最大尺寸等于包含我的文本的矩形区域?也就是说,我怎样才能获得我的文本区域的边界? – Nick

+0

@Gnietschow顺便说一句,您的评论是正确的,请写下您的答案。 – Nick

回答

3

我作为一个答案评论(是啊,猜对了:) ):

只是一个快速猜测:你有没有检查你的布局框 的最大宽度是不是太宽,所以中心会在那里结束?

通过ID2D1RenderTarget::DrawTextLayout方法中使用的定义IDWriteTextLayout布局框,其确定其中文本居中的最大宽度。它可以通过界面的methodsGetMaxWidthSetMaxWidth)进行操纵。

+0

此外,宽度是您第一次调用CreateTextLayout时的参数。 –