Entwickler-Ecke

WinForms - Label verschieben sich beim Drucken


deramonis - Do 08.07.10 20:34
Titel: Label verschieben sich beim Drucken
Hallo liebe C# Community,

ich bin 20 Jahre alt und studiere Software-Enigneering im 2. Semester. Seit ein paar Wochen haben wir auch C#.
zur Zeit arbeite ich an an einem kleinem Programm, welches einem Fussballtrainer seiner "Arbeit" erleichtern soll. Man kann Spieler hinzufügen, bearbeiten und vor allem diese auch auf einem Spielfeld (bei mir pictureBox) als Label verschieben und so eine Aufstellung zusammenstellen (siehe Anhang "Austellung").
Als weitere Funktion natürlich der Druck der Aufstellung. Hier mein Problem:
Sobald ich die pictureBox samt Label drucken will verschieben sich die labels leicht nach unten und ein wenig nach rechts (siehe Anhang "Druck").
Leider habe ich keine Ahnung warum das passiert.
Lediglich aufgefallen ist mir, dass dies nur passiert wenn ich den labels die pictureBox als parent zuweise, was ich mache damit diese mitgedruckt werden.
Hier mal der Code zum Drucken:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Bitmap b = new Bitmap(pictureBox1.Width, pictureBox1.Height);

            label1.Parent = pictureBox1;
            .....
            label11.Parent = pictureBox1;
            pictureBox1.DrawToBitmap(b, e.PageBounds);

            e.Graphics.DrawImage(b, new Point(1520));
        }

        private void button1_Click(object sender, EventArgs e)
        {
            printDocument1.Print();
        }


Würde mich freuen, wenn einer ne Idee hat

MfG


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Do 08.07.2010 um 20:53


Christian S. - Do 08.07.10 20:52

Hallo und :welcome:!

Du musst die Positionen der Labels anpassen, weil die ja dann relativ zum Rahmen der PictureBox und nicht mehr der Form gemessen werden:

C#-Quelltext
1:
2:
3:
            label1.Parent = pictureBox1;
            label1.Left -= pictureBox1.Left;
            label1.Top -= pictureBox1.Top;


Viele Grüße,
Christian


deramonis - Fr 09.07.10 08:00

Hey Christian,

Vielen Dank für die schnelle Hilfe.
Funktioniert einwandfrei.

MfG