Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
18.07.10, 15:54
|
#1
|
Erfahrener Newbie
Registriert seit: Jul 2010
Beiträge: 120
Bedankt: 1
|
Form Inhalt drucken wie?
Hallo Leute
habe eine frage.
Ist es möglich den Inhalt einer Form zu drucken?
Also z.B Textboxen, Labels usw.
Aber kein MenuStrip.
Ich benutze Visual Basic 2008 Express.
Wäre super wen ihr mir helfen könntet!!
MfG moin2010
|
|
|
20.07.10, 12:30
|
#2
|
Registriert seit: Dec 2009
Beiträge: 792
Bedankt: 49
|
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] gibt ja viele Einträge bei Google.
__________________
To succeed you have to stop being ordinary and be legen - wait for it - dary.
|
|
|
20.07.10, 12:34
|
#3
|
Erfahrener Newbie
Registriert seit: Jul 2010
Beiträge: 120
Bedankt: 1
|
ok habs mir mal angeschaut muss ich dan mal ausprobieren.
|
|
|
20.07.10, 18:36
|
#4
|
Erfahrener Newbie
Registriert seit: Jul 2010
Beiträge: 120
Bedankt: 1
|
ich habs mir angeschaut aber bekomme es einfach nicht hin.
Ist es nicht vieleicht möglich das er dan einfag ein bild von
sich erstellt, anzeigt und das man dan auf einen Button klickt zum druckten?
Es kann sich von mir aus auch eine neu Form oder so öffnen wo man es dan sieht
und wo dan dort ein Button zum Drucken ist.
|
|
|
21.07.10, 12:29
|
#5
|
Registriert seit: Dec 2009
Beiträge: 792
Bedankt: 49
|
Zitat:
Zitat von moin2010
ich habs mir angeschaut aber bekomme es einfach nicht hin.
|
Was hat nicht geklappt? Welche Fehlermeldung?
__________________
To succeed you have to stop being ordinary and be legen - wait for it - dary.
|
|
|
21.07.10, 15:25
|
#6
|
Erfahrener Newbie
Registriert seit: Jul 2010
Beiträge: 120
Bedankt: 1
|
nein, das problem ist, ich weis nicht wo ich es einfügen muss!
|
|
|
21.07.10, 18:09
|
#7
|
Registriert seit: Dec 2009
Beiträge: 792
Bedankt: 49
|
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:
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.
|
|
|
23.07.10, 17:33
|
#8
|
Erfahrener Newbie
Registriert seit: Jul 2010
Beiträge: 120
Bedankt: 1
|
ich habe es jetzt alles mal eingefügt.
Jetzt habe ich eine Frage.
Ist es schlimm wen es ein Syntaxfehler gibt?
Weil der kommt bei: ByVal
|
|
|
23.07.10, 17:47
|
#9
|
Mitglied
Registriert seit: Aug 2009
Ort: void* (*wtf[])(void **);
Beiträge: 453
Bedankt: 137
|
nein, das ist nicht schlimm, VB ist eh' ein einziger syntaxfehler ...
hast du evntl. direkt davor ein '_' unterschlagen?
__________________
entropie erfordert keine wartung
|
|
|
20.08.10, 18:11
|
#10
|
Erfahrener Newbie
Registriert seit: Jul 2010
Beiträge: 120
Bedankt: 1
|
ich habe jetzt mal ein test druck gemacht.
Kann man aber vieleicht das noch so machen, dass das MenuStrip nicht mit auf dem gedruckten Bild angezeigt wird?
|
|
|
20.08.10, 20:09
|
#11
|
Registriert seit: Dec 2009
Beiträge: 792
Bedankt: 49
|
Hab jetzt kein Bock zu suchen, aber du könntest ja direkt vor dem Drucken das MenuStrip verstecken..ist zwar nicht so ganz toll aber naja^^
__________________
To succeed you have to stop being ordinary and be legen - wait for it - dary.
|
|
|
20.08.10, 20:23
|
#12
|
Erfahrener Newbie
Registriert seit: Jul 2010
Beiträge: 120
Bedankt: 1
|
ne das is nich so gut.
wäre besser, wenn es gleich ohne MenuStrip gedruckt wird,
aber in der Form angezeigt wird.
|
|
|
22.08.10, 07:20
|
#13
|
Erfahrener Newbie
Registriert seit: Jul 2010
Beiträge: 120
Bedankt: 1
|
kann mir niemand helfen?
|
|
|
22.08.10, 11:22
|
#14
|
Registriert seit: Dec 2009
Beiträge: 792
Bedankt: 49
|
Zitat:
Zitat von moin2010
ne das is nich so gut.
wäre besser, wenn es gleich ohne MenuStrip gedruckt wird,
aber in der Form angezeigt wird.
|
Warum ist das nicht so gut? Vor dem Drucken versteckst du das MenuStrip mit -> MenuStrip1.Visible = False und danach wieder auf True stellen..das merkste dann gar nicht. Oder denkst du, dass das MenuStrip dann für immer verschwindet?
Hier ist ein kürzerer Code zum Ausdrucken der Form, denn der von oben ist etwas zu lang^^
Code:
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim bmp As New Bitmap(Me.Width, Me.Height)
Me.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Width, Me.Height))
e.Graphics.DrawImage(bmp, 0, 0)
End Sub
Per Button die Form dann ausdrucken:
Code:
PrintDocument1.Print()
__________________
To succeed you have to stop being ordinary and be legen - wait for it - dary.
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr.
().
|