2012-01-23 84 views
-2

我需要在打印Document方法中使用Graphics.DrawString來編寫一個垂直方向的字符串,並且我對字符串寬度有一個限制,問題是該字符串是從左側寫入的以正確的,我需要的是,第一行是對我使用下面C#圖形DrawString VerticalDirection從底部開始

SizeF s = e.Graphics.MeasureString(str1, po.defaultF,la1, StringFormat.GenericTypographic); 
RectangleF rec=new RectangleF(); 
StringFormat strF=new StringFormat(); 
strF.FormatFlags=StringFormatFlags.DirectionVertical; 
rec.Height=s.Width+15; 
rec.Width=s.Height+5; 
rec.X =0; 
rec.Y=0; 
e.Graphics.DrawString(str1, po.defaultF, Brushes.Black, rec, strF); 
+1

使用Graphics.RotateTransform。 –

回答

-1

的解決方案是使用RotateTransform(90),並且不使用StringFormatFlags.DirectionVertical 這裏是代碼的和平:()

Rectangle rec = new Rectangle(); 
rec.Height = 2 * po.medF.Height; 
rec.Width=100; 
rec.X = 0; 
rec.Y = 0; 
SizeF s; 
String str = "your Text"; 
StringFormat strf = new StringFormat(); 
strf.Alignment = StringAlignment.Center;  
rec.X = 0; 
rec.Y = 0; 
e.Graphics.TranslateTransform(X1, Y1); 
e.Graphics.RotateTransform(90); 
e.Graphics.DrawString(str, po.medF, Brushes.Black, rec, strf); 
e.Graphics.ResetTransform(); 
0

方法你應該看看下面這個例子正確的:

http://msdn.microsoft.com/en-us/library/aa287525%28v=vs.71%29.aspx

它應該做的正是你」再問。

編輯:

從右繪製到左的可能笨的辦法:

SizeF s = e.Graphics.MeasureString(str1, po.defaultF,la1, 
StringFormat.GenericTypographic); 
RectangleF rec=new RectangleF(); 
StringFormat strF=new StringFormat(); 
strF.FormatFlags=StringFormatFlags.DirectionVertical; 
rec.Height=s.Width+15; 
rec.Width=s.Height+5; 
rec.X =0; 
rec.Y=0; 
string[] strRightToLeft = str1.Split('\n'); 
Array.Reverse(strRightToLeft); 
e.Graphics.DrawString(String.Concat(str1), po.defaultF, Brushes.Black, rec, strF); 
+0

這就是我使用的,但問題是當我有多行第一行將在左邊,我需要它在右邊 – Mario

+0

我不知道它會工作,但你有沒有嘗試過'strF.Alignment = StringAlignment.Far;'? – annonymously

+0

沒有這個解決方案不起作用我已經試過了 – Mario

2

正如漢斯,發表了意見RotateTransform可以用來前後翻頁的字符串:

strF.Alignment = StringAlignment.Far; 
e.Graphics.TranslateTransform(rec.Right, rec.Bottom); 
e.Graphics.RotateTransform(180); 
e.Graphics.DrawString(str1, po.defaultF, Brushes.Black, rec, strF); 

TranslateTransform將座標系的原點更改爲您的rec矩形的右下角,然後將RotateTransform將其翻轉180度,然後將字符串的對齊方式更改爲「遠」以將該字符串放入原始字符串繪製的相同位置。

+0

這個解決方案不能解決我的問題,因爲第一行仍然在左邊,然後是第二行,我需要的不是改變文本方向問題是,當文本被拆分爲適合矩形的第一行在左邊,我需要它在右邊 – Mario

+0

@Mario你可能需要用圖像編輯你的問題。我很難想象如何嘗試顯示文本。 – LarsTech

+0

180?我期望它是90或270. – Bitterblue