2009-06-05 13 views
9

私はPrintDocumentを使ってページを印刷しています。ある時点で、テキストを90度回転させて印刷します。つまり、テキストを縦に印刷します。何か案は ???印刷のためにテキストを回転する

g.RotateTransform(90);

は、OnPaintでは機能しません。

+0

あなたは何を意味するのか「のOnPaintのために動作しない」:黒、赤はRotateTransform(35)を呼び出した後で、RotateTransformへの呼び出しの前にいるのですか? – Lucero

+0

あなたは人生の救い主です!ありがとう!!! ちょっとしたことを明確にするために、回転させずに好きなものを描画してから、次のように入力します。 e.Graphics.RotateTransform(90); とそれ以降のすべてが回転します。 –

答えて

26

RotateTransformを呼び出すときは、座標系の終了位置に注意する必要があります。次のコードを実行すると、左端の左側に「傾斜したテキスト」が表示されます。それが表示されていない:

e.Graphics.Clear(SystemColors.Control); 
e.Graphics.DrawString("Normal text", this.Font, SystemBrushes.ControlText, 10, 10); 
e.Graphics.RotateTransform(90); 
e.Graphics.DrawString("Tilted text", this.Font, SystemBrushes.ControlText, 10, 10); 

あなたが描画面を90度(時計回り)に傾いているので、y座標は現在、代わりにアップ/ダウンの(あなたの視点から)左/右の軸に沿って移動します。大きい数字はさらに左側にあります。だから、表面の目に見える部分に傾いたテキストを移動するには、y座標減少する必要があります。デフォルトでは

e.Graphics.Clear(SystemColors.Control); 
e.Graphics.DrawString("Normal text", this.Font, SystemBrushes.ControlText, 10, 10); 
e.Graphics.RotateTransform(90); 
e.Graphics.DrawString("Tilted text", this.Font, SystemBrushes.ControlText, 10, -40); 

座標系は、表面の左上隅にそのオリゴを持って、それがあるので、 RotateTransformがサーフェスを回転させる軸です。

ここにこれを示す画像があります。

Diagram

+1

ありがとうFredrik。出来た。私はMSDNがこれをこのように記述したがっています。 – Prithis

+1

非常に参考になり、図の+1 – JYelton

関連する問題