2013-10-18 195 views
4

我正在打印收據,但我無法弄清楚如何在圖形模式下正確對齊文本。我嘗試了一些不同的東西,但它們要麼效率低下,要麼不適合我的情況。有沒有一種方法可以輕鬆地將文本對齊到右側?這是我的代碼現在。右對齊印刷文本

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()); 
     } 

回答

3

使用Graphics.MeasureString Method得到渲染串有多長,並在rightMargin - measuredStringWidth繪製。

+0

完美的作品,謝謝! – Nathan

+1

當文字的一部分是從左到右,另一部分是從右到左(例如同一行中的阿拉伯文和英文文本)時,這不會正常工作。 @Chris答案在這種情況下可以正常工作 – 2016-08-11 12:22:07

11

爲了它能夠右對齊文本的,你需要指定一個佈局矩形:

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

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

然後將它對準的是矩形內的字符串。

+0

msdn:https://msdn.microsoft.com/en-us/library/332kzs7c(v=vs.110).aspx – rockXrock