[VB 2005.net] Inhalt einer Picturebox / Panels drucken

Alaitoc

Erfahrenes Mitglied
Morgen zusammen,

Also ich habe in einer Picturebox / Panel einige Pictureboxen mit Inhalt erstellt, wenn ich auf einen Button drücke. Funktioniert alles wunderbar, doch wenn ich dann die Picturebox / Panel drucken möchte, sind die Dateien wenn sie zum Beispiel übereinander waren genau umgekehrt. Also die die früher unten waren sind oben und die früher oben waren sind unten.

Was kann ich dagegen tun? :confused:
 
So hier ist der Code:

Zum drucken:
Code:
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Dim w As Integer = screenpicture.Width  ' Breite des Hintergrunds
        Dim h As Integer = screenpicture.Height ' Höhe des Hintergrunds
        ' Bitmap für das Abbild des Controls / der Form bereitstellen
        Dim background = New Bitmap(w, h)
        ' Screenshot speichern
        screenpicture.DrawToBitmap(background, Rectangle.FromLTRB(0, 0, w, h)) 'Hintergrund zum   Speichern vorbereiten
        'Drucker auswählen
        PrintDocument1.PrinterSettings.PrinterName = PrintDialog1.PrinterSettings.PrinterName
        'Drucken
        Dim bg = New PictureBox
        bg = background
        e.Graphics.DrawImage(bg, screenpicture.Bounds)
End Sub

Die Picturebox die erstellt werden.
Code:
        pname = (CType(sender, PictureBox).Name.Remove(0, 10))
        pArray(nFree) = New PictureBox
        pArray(nFree).Parent = Me.screenpicture
        pArray(nFree).Location = New Point(256, 256)
        pArray(nFree).Size = New Size(100, 100)
        pArray(nFree).Visible = True
        pArray(nFree).SizeMode = PictureBoxSizeMode.AutoSize
        pArray(nFree).ImageLocation = ".\Bilder\" + pname + ".jpg"

Start des Druckvorgangs
Code:
    Private Sub DruckengesamtesFeldToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DruckengesamtesFeldToolStripMenuItem.Click
        'Druckfunktion starten

        If PrintDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            PrintDocument1.Print()
        End If
    End Sub
 
Also ich erklärs lieber nochmal zur Sicherheit. Ich erstelle als erstes einen kleinen Block
und dann einen großen Block und lege den großen über den kleinen Block, dann ist der
kleine nicht mehr zu sehen. Aber wenn ich dann drucke ist der kleine Block auf dem großen
Block.


1. So sieht das beim Formular aus. (Der kleine Block ist unter dem Großen)

########
########
########
########
########

2. So sieht es beim Drucken aus. (Der kleine Block ist über dem Großen)

########
########
###[_]###
########
########

Andersrum wenn ich es erst so machen würde :

########
########
###[_]###
########
########

Dann würde es beim Drucken so aussehen:


########
########
########
########
########

Schöner gehts nicht weil irgendwie die Leerzeichen immer wieder gelöscht werden...

MfG Alaitoc
 
Zuletzt bearbeitet:
Zurück