在C#中使用DrawString对文本进行对齐

ahp*_*ete 5 c# system.drawing

我在一个System.Drawing.Graphics物体上画文字.我正在使用该DrawString方法,使用文本字符串,a Font,a Brush,a bounding RectangleF和a StringFormat参数.

调查一下StringFormat,我发现我可以将它的Alignment属性设置为Near,CenterFar.但是我还没有找到将它设置为Justified的方法.我怎样才能做到这一点?

谢谢您的帮助!

Mer*_*ham 1

没有内置的方法可以做到这一点。此线程中提到了一些解决方法:

http://social.msdn.microsoft.com/Forums/zh/winforms/thread/aebc7ac3-4732-4175-a95e-623fda65140e

他们建议使用重写RichTextBox,重写SelectionAlignment属性(请参阅本页了解如何操作)并将其设置为Justify

覆盖的核心围绕着这个 pInvoke 调用:

PARAFORMAT fmt = new PARAFORMAT();
fmt.cbSize = Marshal.SizeOf(fmt);
fmt.dwMask = PFM_ALIGNMENT;
fmt.wAlignment = (short)value;

SendMessage(new HandleRef(this, Handle), // "this" is the RichTextBox
    EM_SETPARAFORMAT,
    SCF_SELECTION, ref fmt);
Run Code Online (Sandbox Code Playgroud)

不确定这可以如何集成到您现有的模型中(因为我假设您绘制的不仅仅是文本),但这可能是您唯一的选择。