Screenshot eines Bereichs erstellen

hbrauchl

Mitglied
Hallo Zusammen!

Ist es möglich von einem Bereich eines erzeugten Fensters in Laufzeit
einen Screenshot zu machen?

Habe nämlich folgendes Problem:
Ich zeichne auf einer PictureBox Grafiken und setze meinen Text in
Form von Text-Labels.

Möchte nun ein Bild von diesem Bereich haben (jedoch mit Text).
Ohne wäre es ja kein Problem (Pichture.Image).

Oder gibt es die Möglichkeit die Text-Labels in Grafik zu konvertieren?

Vielen Dank im voraus.

LG,
Hans
 
Danke für den Tipp, jedoch hat das bei mir leider überhaupt nicht funktioniert.
Es kam immer ein leeres Blatt.

Weiß jemand noch eine andere Möglichkeit?
Speziell für Pictureboxen?

Danke im voraus.


LG,
Hans
 
Hi,

haste das Teil auch richtig angepasst? Weil bei mir funzelt das Problemlos.

Code:
Private Declare Function StretchBlt Lib "gdi32" ( _
    ByVal hdc As Long, _
    ByVal x As Long, _
    ByVal y As Long, _
    ByVal nWidth As Long, _
    ByVal nHeight As Long, _
    ByVal hSrcDC As Long, _
    ByVal xSrc As Long, _
    ByVal ySrc As Long, _
    ByVal nSrcWidth As Long, _
    ByVal nSrcHeight As Long, _
    ByVal dwRop As Long) As Long
    
Private Sub Command2_Click()
    Printer.Print
    Call StretchBlt(Printer.hdc, 100, 100, Picture1.ScaleWidth, Picture1.ScaleHeight, _
                    Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, _
                    vbSrcCopy)
    Printer.EndDoc
End Sub

Gruß
Das Orakel
 
Hi!

Vielen Dank für Deine Antwort.

Jedoch habe ich nachwievor das Problem, daß meine Textlabels nicht gedruckt
werden (der Rest vom Bild natürlich schon).

Hast Du eine Ahnung was da falsch sein könnte?

Danke nochmals im voraus.

LG,
Hans
 
Hi

hmmm ein Orakel und Ahnung haben. Höchstens Vorahnungen :) :)

Ich bin fast geneigt den absoluten Unspruch loszuwerden ("Das kann doch gar nicht sein"). Bevor ich das tue, prüfe mal, ob die ScaleMode-Eigenschaft auf Pixels und HasDC auf True sitzt.

Gruß
Das Orakel
 
Hi!

Ich habe mal ein neues Projekt aufgemacht und das ganze mal extra
getestet.
Interessanterweise funktioniert es da.

Übernehme ich das nun 1:1 in mein Programm, funktioniert es nicht.
Habe auch den Scalemode noch extra gesetzt. HasDc lässt sich nicht in
Laufzeit setzen (ist aber beim Start auf True).

Soll ich Dir das Programm event. schicken?

LG,
Hans
 
Hi!

Habe den Fehler leider nicht gefunden.

Ich möchte noch gerne das ganze als Bild speichern (JPG, BMP, usw.) und
nicht drucken.
Wie kann ich das machen?

Vielen Dank nochmals.

LG,
Hans
 
Hi zusammen,

für die, die es Interessiert:

Das Problem lag an der AutoRedraw Eigenschaft vom Picture Control. War auf True gesetzt. Für diesen Fall muss es auf False sitzen.

Gruß
Das Orakel
 
Zurück