Einzelnen Beitrag anzeigen
Ungelesen 21.07.10, 18:09   #7
.ShoXx!
 
Benutzerbild von .ShoXx!
 
Registriert seit: Dec 2009
Beiträge: 792
Bedankt: 49
.ShoXx! ist noch neu hier! | 8 Respekt Punkte
Standard

Wo du es einfügen sollst? Da sind doch schon alle Events...
Oben unter "Public Class Form1":

Code:
Private Const SRCCOPY As Integer = &HCC0020
 
    Private Declare Function BitBlt _
   Lib "gdi32.dll" ( _
   ByVal hdcDest As IntPtr, _
   ByVal x As Int32, _
   ByVal y As Int32, _
   ByVal Width As Int32, _
   ByVal Height As Int32, _
   ByVal hdcSrc As IntPtr, _
   ByVal xSrc As Int32, _
   ByVal ySrc As Int32, _
   ByVal dwRop As Int32 _
   ) As Boolean
 
    Private formImage As Bitmap

Public Sub PrintForm()
        ' Gibt eine Bildschirmkopie einer am Bildschirm komplett 
        ' sichtbaren Form auf dem Drucker aus (Screenshot). 
        ' Platzieren Sie diesen Code im Form-Klassenmodul der 
        ' Form, die Sie ausdrucken möchten. 
 
        ' Zunächst: Bildschirmkopie der Form erzeugen. 
        ' Nachteil: Verdeckte und anderweitig nicht sichtbare 
        ' Teile(der) WinForm werden nicht mit in die Grafik 
        ' aufgenommen. 
 
        ' Graphics-Objekt für die Form erzeugen 
        Dim formGraphics As Graphics = Me.CreateGraphics
 
        ' Kompatible Bitmap erzeugen und Graphics-Objekt abholen 
        formImage = New Bitmap(Me.Width, Me.Height, formGraphics)
        Dim memGraphics As Graphics = Graphics.FromImage(formImage)
 
        ' Quell- und Ziel-DCs abholen 
        Dim sourceDC As IntPtr = formGraphics.GetHdc
        Dim targetDC As IntPtr = memGraphics.GetHdc
 
        ' Kopieren ("Screenshot") 
        BitBlt(targetDC, _
         0, 0, Me.ClientRectangle.Width, Me.ClientRectangle.Height, _
         sourceDC, _
         Me.ClientRectangle.X, Me.ClientRectangle.Y, _
         SRCCOPY)
 
        ' Alternative Variante folgend auskommentiert: 
        ' Mit dem folgenden Code wird die gesamte Form (inkl. Rändern 
        ' und Titelzeile) in die Ziel-Bitmap kopiert: 
        ' BitBlt(targetDC, _ 
        '  0, 0, Me.Size.Width, Me.Size.Height, _ 
        '  sourceDC, _ 
        '  0, 0, _ 
        '  SRCCOPY) 
 
        ' DCs freigeben 
        formGraphics.ReleaseHdc(sourceDC)
        formGraphics.Dispose()
        memGraphics.ReleaseHdc(targetDC)
        memGraphics.Dispose()
 
        ' In formImage steht die Abbildung der Form nun zur Verfügung. 
        ' Die Abbildung aus formImage ausdrucken: 
        PrintDocument1.Print()
        formGraphics.Dispose()
 
    End Sub
Dann fügst du einen Button hinzu, doppelklick auf ihn:
Code:
Me.PrintForm()
Dann fügst du noch ein PrintDocument aus der Toolbox hinzu:

Code:
Private Sub PrintDocument1_PrintPage( _
    ByVal sender As System.Object, _
    ByVal e As System.Drawing.Printing.PrintPageEventArgs _
    ) Handles PrintDocument1.PrintPage
 
        ' Screenshot ausdrucken 
        e.Graphics.DrawImage(formImage, 0, 0)
 
    End Sub
Per Buttonklick wird dann deine Form ausgedruckt.
__________________
To succeed you have to stop being ordinary and be legen - wait for it - dary.
.ShoXx! ist offline   Mit Zitat antworten