具有原点左侧/基线的DrawString

时间:2012-11-05 09:28:35

标签: c# winapi gdi

当我使用Graphics.DrawString(... myPoint)时,字符串第一个字母的左侧/顶部位于myPoint。

我可以将DrawString与win32 SetTextAlign结合使用来设置文本原点TA_LEFT|TA_BASELINE还是有一些.NET等价物?

如果我在(100,100)绘制一个Rectangle,在(100,100)绘制一个字符串,我希望该字符串位于矩形上方(不在顶部/左上角)

1 个答案:

答案 0 :(得分:1)

似乎没有内置的方法来执行此操作(甚至调用DrawString()的重载,其StringFormat并在其LineAlignment中指定StringAlignment.Far如果您提供的矩形足够高,则属性只会导致文本底部对齐。

但是,您可以自行执行计算并相应地修改Y的{​​{1}}坐标。例如,您可以使用Height类的Font属性:

PointF

请注意,上面的代码实际上并未实现基线对齐(整个字形将位于yourPoint.Y -= yourFont.Height; yourGraphics.DrawString(yourText, yourFont, yourBrush, yourPoint); 中的原始坐标之上)。真正的基线对齐需要yourPoint.Yp等字母的“尾部”部分位于该点之下。它可以用更复杂的东西来实现,例如:

y