C# DPI beim Drucken einer Picturebox

Kampfwurst Hugo

Lieutenant
Registriert
Jan. 2010
Beiträge
583
Hallo

Ich habe folgende Problem bei dem ich seit 3 Tagen nicht weiterkomme.

Ich beziehe Daten von einer Datenbank die ich dann in einer PictureBox mittels DrawString einzeln ausgeben.
Die einzelnen Daten wie Firma, Name.... können dann in der Picturebox verschoben werden.

Nun zu meinem Problem.
Wenn ich die Picturebox dann ausdrucke ist alles unscharf und pixelig. Wieso das?

Code:
private void printDocument1_PrintPage_1(object sender, PrintPageEventArgs e)
        {
            e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
            e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
            e.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
            double scale = 203 / 96;
            int width = (int)(pictureBox2.Width * scale);
            int height = (int)(pictureBox2.Height * scale);

            Print = new Bitmap(width, height);
            pictureBox2.DrawToBitmap(Print, new Rectangle(0, 0, width, height));
            e.Graphics.DrawImage(Print, 0, 0);
            Print.Dispose();

        }

Wieso das? Wie bekomme ich den Text richtig scharf ausgedruckt.

Danke

Christoph
Ergänzung ()

hat keiner eine Idee wie ich das Problem lösen könnte?:rolleyes:
 
Ich bin nicht ganz firm was Bildbearbeitung angeht aber zwei Dinge sind mir aufgefallen:
1. In der Methode wird nichts gedruckt
2. Du skalierst dein Bild hoch, klar, dass das dann unscharf/pixelig wird. Wenn du ein scharfes Schriftbild willst, muss du das auch in der entsprechenden Auflösung zeichnen.
 
wie zeichne ich in der entsprechenden Auflösung? Ich finde nichts wie ich die Auflösung oder DPI der Picturebox verändern kann.

Das Drucken erledige ich hier

Code:
        private void button3_Click(object sender, EventArgs e)
        {
            System.Drawing.Printing.PrintDocument myPrintDocument1 = new System.Drawing.Printing.PrintDocument();
            PrintDialog myPrinDialog1 = new PrintDialog();
            myPrintDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage_1);
            myPrinDialog1.Document = myPrintDocument1;

            if (myPrinDialog1.ShowDialog() == DialogResult.OK)
            {

                myPrintDocument1.Print();

            }
        }
 
leider bring ich dieses Beispiel nicht so geändert das ich den Text in eine Picturebox habe. Ich muss den Text mit der Maus verschieben können.
 
Zurück
Oben