Entwickler-Ecke

Multimedia / Grafik - rechtsbündig drucken...


tomycat - Do 03.11.16 20:56
Titel: rechtsbündig drucken...
hallo,
ich habe untereinander mehere regionen, es ändert sich immer Höheb durch eine Schleife.
Soblad ich drucke steht der Text 123456 linksbündig auf dem Papier, gibt es ein Trick, dass es rechtsbündig ist.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
 #region             
                rt.X = 480;
                rt.Y = 222 + Höheb;
                rt.Height = 18;
                rt.Width = 70;

                if (hinterg == 0)
                    e.Graphics.FillRectangle(Brushes.DarkGray, rt); // füllt Hintergrund
                if (headerx == 0)
                {
                    Font dxqi = new Font("Microsoft San Serif"10);
                    if (auslesen[22] == "1")
                    {
                        e.Graphics.DrawRectangle(pv, rt);   //Zeichnet ein Rechteck       
                    }       
                    e.Graphics.DrawString("123456", dxqi, Brushes.Black, rt);
                }


Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Th69 - Do 03.11.16 21:05

Stichwort: StringFormat.Alignment [https://msdn.microsoft.com/de-de/library/system.drawing.stringformat.alignment(v=vs.110).aspx]-Eigenschaft


tomycat - Do 03.11.16 21:59

danke für den link, steige aber nicht ganz durch, über Google habe ich folgendes gefunden:
https://social.msdn.microsoft.com/Forums/de-DE/1002b286-ee2b-4c5f-9ec7-c3a45fce16a4/rechtsbndig-drucken-in-c?forum=dotnetframeworkde

Die beschreiben genau das Problem:
Jetzt habe ich folgendes geändert:

C#-Quelltext
1:
2:
3:
                  float rightMargin = e.MarginBounds.Left + 100;
               
                    e.Graphics.DrawString("123456", dxqi, Brushes.Black, rightMargin, rt);


Aber jetzt ist rt Rot unterstriechen."CAn not convert form System.Drawing.Rectangle to float
Wenn ich 90 nehme, dann ist VS zufrieden. Aber die haben eine fixe Position (breite/länge)auf dem Papier.


Delete - Do 03.11.16 22:15

- Nachträglich durch die Entwickler-Ecke gelöscht -


tomycat - Do 03.11.16 22:22


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
   ////rechts bü
            StringFormat format1 = new StringFormat(StringFormatFlags.NoClip);
            StringFormat format2 = new StringFormat(format1);
            format1.LineAlignment = StringAlignment.Near;
            format1.Alignment = StringAlignment.Far;
            format2.LineAlignment = StringAlignment.Center;
            format2.Alignment = StringAlignment.Far;
            format2.Alignment = StringAlignment.Far;

            ////// rechts bü


     e.Graphics.DrawString(spalte_d_auf[x - 1], dxqii, Brushes.Black, (RectangleF)rt, format1);


Das wäre jetzt meine Lösung gewesen, aber deine Lösung ist besser.