2017-01-25 4 views
1

Ist es möglich, mit printdocument eine Zeichenfolge wie im Bild unten zu drucken. Das heißt, vertikal zu drucken, während der Text horizontal bleibt. Alle meine Suchen, die vertikal drucken, drehen die Zeichenkette, die die Buchstaben dreht.C# Text vertikal drucken, aber Zeichen bleiben horizontal

Mein Code dafür ist sehr ineffizient und statisch, da nur das Wort PRODUKT berücksichtigt wird. Es ist mir sogar peinlich, es hier zu posten, aber Sie können es unten sehen. Ich fixiere die Position jedes Charakters. Das Problem hierbei ist, dass sich das Wort PRODUKT dynamisch ändern kann, so dass der folgende Code nicht funktioniert.

Gibt es eingebaute Funktionen, die dies für Strings ähnlich wie e.Graphics.RotateTransform ausführen?

e.Graphics.DrawString("P", probsoltext, Brushes.Black, new PointF(28, 406)); 
e.Graphics.DrawString("R", probsoltext, Brushes.Black, new PointF(28, 423)); 
e.Graphics.DrawString("O", probsoltext, Brushes.Black, new PointF(28, 441)); 
e.Graphics.DrawString("D", probsoltext, Brushes.Black, new PointF(28, 459)); 
e.Graphics.DrawString("U", probsoltext, Brushes.Black, new PointF(28, 476)); 
e.Graphics.DrawString("C", probsoltext, Brushes.Black, new PointF(28, 495)); 
e.Graphics.DrawString("T", probsoltext, Brushes.Black, new PointF(28, 513)); 

enter image description here

+0

Jeder Code für dieses Problem geschaffen? –

+0

Wahrscheinlich gibt es keine solchen Methoden, Ihre manuelle Arbeit scheint eine gute Lösung zu sein, aber Sie müssen immer berechnen, ob sie zur Seite passt. –

+0

@ P.K. Wie wäre es mit StringFormat? – A3006

Antwort

0

Hoffnung folgenden Code hilft.

System.Drawing.Graphics formGraphics = this.CreateGraphics(); 
     string drawString = "Product"; 
     System.Drawing.Font drawFont = new System.Drawing.Font("Arial", 16); 
     System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black); 
     float x = 100.0f; 
     float y = 15.0f; 
     System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical); 
     formGraphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat); 
     drawFont.Dispose(); 
     drawBrush.Dispose(); 
     formGraphics.Dispose(); 

folgende Zeile wird der Trick

System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical); 
+0

Ich habe deinen Code ausprobiert. Die Charaktere sind seitlich und nicht wie auf dem Bild, das ich oben gepostet habe. – nerdalert

+0

Was ist das Endziel? Sie möchten etwas wie eine Tabelle anzeigen, in der die erste Spalte für einige Zeilen einen gemeinsamen Wert hat; welche wird vertikal ausgerichtet sein? – A3006

+0

Ich möchte es wie das Bild in meinem OP aussehen. Es ist im Grunde eine Tabelle, in der die erste Spalte der Titel ist. Der Benutzer kann die Sprache des Titels ändern, wodurch die Zeichen geändert werden. Deshalb ist meine manuelle Lösung hier nutzlos. Aber es ist wichtig, dass die Zeichen lesbar sind und nicht gedreht werden. – nerdalert

Verwandte Themen