C# 右对齐打印文本

C# 右对齐打印文本,c#,.net,winforms,visual-studio-2012,C#,.net,Winforms,Visual Studio 2012,我现在正在打印收据,但我不知道如何在图形模式下右对齐文本。我试过几种不同的方法,但它们要么效率很低,要么在我的情况下不起作用。是否有一种方法可以轻松地将文本向右对齐?这是我的密码 using (Font printFont = new Font("Courier New", 9.0f)) { e.Graphics.DrawString("Subtotal:", printFont, Brushes.Black, leftMar

我现在正在打印收据,但我不知道如何在图形模式下右对齐文本。我试过几种不同的方法,但它们要么效率很低,要么在我的情况下不起作用。是否有一种方法可以轻松地将文本向右对齐?这是我的密码

using (Font printFont = new Font("Courier New", 9.0f))
        {               
            e.Graphics.DrawString("Subtotal:", printFont, Brushes.Black, leftMargin + 80, HeightToPrint, new StringFormat());
            e.Graphics.DrawString(subtotal.ToString(), printFont, Brushes.Black, leftMargin + 150, HeightToPrint, new StringFormat());
        }

使用获取渲染字符串的长度,并将其绘制在
rightMargin-measuredStringWidth

为了使其能够右对齐文本,您需要指定一个布局矩形:

var format = new StringFormat() { Alignment = StringAlignment.Far };
var rect = new RectangleF( x, y, width, height );

e.Graphics.DrawString( text, font, brush, rect, format );

然后,它将在该矩形内对齐字符串。

如果文本的一部分从左到右,另一部分从右到左(例如,同一行中的阿拉伯语和英语文本),这将无法正常工作@Chris answer在这种情况下可以正常工作