vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Form vernüftig ausdrucken 
Autor: PommeDeTerre
Datum: 16.01.07 15:35

Hallo,
ich möchte eine Windows-Form vernüftig ausdrucken. Habe mit Google hierfür mehere Tipps dazu gefunden, die aber immer auf das selbe hinauslaufen:
Public Class Form1
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
 
    End Sub
    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
 
 
    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
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        Me.PrintForm()
    End Sub
 
End Class
Das Funktioniert auch, jedoch schmiert der Drucker doch schon extrem dabei was nicht gerade schön anzusehen ist. Ich denke das liegt daran, das das Image was erzeugt wird gezoomt wird und nicht die Originalgrößen hat. Habe das Problem mit den schmieren aber egal ob ich die Form Maximiert starte oder Normal.

Weiß jemand wie das besser bzw ohne schmieren geht?

Pdt

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Form vernüftig ausdrucken3.324PommeDeTerre16.01.07 15:35
Re: Form vernüftig ausdrucken1.800Moderatorralf_oop16.01.07 15:44
Re: Form vernüftig ausdrucken1.601ModeratorFZelle16.01.07 15:49
Re: Form vernüftig ausdrucken1.571Moderatorralf_oop16.01.07 15:51
Re: Form vernüftig ausdrucken1.612PommeDeTerre16.01.07 16:16
Re: Form vernüftig ausdrucken1.481PommeDeTerre16.01.07 15:53
Re: Form vernüftig ausdrucken1.533ModeratorFZelle16.01.07 16:31
Re: Form vernüftig ausdrucken1.482PommeDeTerre16.01.07 16:37
Re: Form vernüftig ausdrucken1.609PommeDeTerre18.01.07 10:57
Re: Form vernüftig ausdrucken1.532ModeratorFZelle18.01.07 13:17
Re: Form vernüftig ausdrucken1.589PommeDeTerre18.01.07 13:50

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel