Seite 1 von 2

Screenshot

Verfasst: 07.10.2012 22:32
von Martin66119
Hallo und guten Abend!

Beispiele für Screenshot habe ich einige gefunden. Nur das das ganze passt nicht so recht auf mein Problem.

Was möchte ich?

Wenn ich die Taste F12 drücke soll ein Screenshot gemacht und gespeichert werden. Wenn ich nochmal auf F12 drüche soll ein weiteres gemacht werden aber nicht als getrenntes Bild gespeichert sondern in einer datei. Also sozusagen in einem Bild in dem 2 drin sind. Und beim dritten druck auf F12 sollts so weitergehen.

Wie mache ich das am einfachsten.

Martin

Re: Screenshot

Verfasst: 07.10.2012 22:42
von RSBasic
1. Erstelle eine Tastenabfrage
2. und wenn die F12-Taste gedrückt wurde, dann erstelle ein Screenshot. Du sagtest ja, du hast ja bereits Beispielcodes gefunden.
3.1. Wenn es das erste Mal ist, dann erstelle ein Bild (CreateImage()) und füg dort dein Screenshot ein und speichere es (SaveImage()).
3.2. Ansonsten lade das vorhandene Bild (LoadImage()) und ermittle die Bildbreite (ImageWidth()), um ab der x. Position dein Screenshot einzufügen (DrawImage()).

Reicht dir diese kurze Beschreibung oder brauchst du ein Beispielcode?

Re: Screenshot

Verfasst: 07.10.2012 22:58
von STARGÅTE
Wenn ich nochmal auf F12 drüche soll ein weiteres gemacht werden aber nicht als getrenntes Bild gespeichert sondern in einer datei. Also sozusagen in einem Bild in dem 2 drin sind. Und beim dritten druck auf F12 sollts so weitergehen.
Was bitte soll der Sinn davon dein?
Wenn ich nun 10 mal auf F12 drücke, dann werden alle Screens in ein Bild gespeichert was dann (10*1920)x1080 droß ist also 19200x1080 ??

Wie ich das kenne, werden die gemachten Screens fortlaufend nummeriert und in einen Ordner gespeichert, aber nicht alle in ein Bild :freak:

Re: Screenshot

Verfasst: 07.10.2012 23:09
von Martin66119
Vielen Dank an euch beide!

Am liebsten würde ich die scrennshots bei jedem Tastendruck in z.B. in ein Worddokument oder pdf-Dokument hintereinander einfügen.

Wenn es dazu ein Beispiel geben würde, das wäre toll.

Grüße
martin

Re: Screenshot

Verfasst: 08.10.2012 06:03
von WPö
Moin!

Word ist Müll. Wenn schon so'n Klimmzug, dann LibreOffice Writer (ist'n - glaube ich - gezipptes XML) oder PDF. Purebasic unterstützt aber beide Formate nicht nativ, weshalb Du selber 'ranmüßtest mit programmieren.

Wennste wirklich Bilder in einer Bilddatei haben wolltest, müßtest Du ein Format mit Ebenen nehmen. GIF ist nicht besonders sinnvoll für Bildschirmkopien, XCF schon eher. Leider versteht so gut wie kein Programm außer GIMP selbst das XCF.

Da wir nicht wissen, was Du mit dem Ergebnis anfangen willst, bleibt es erstmal dabei, selbst eine Entscheidung zu treffen, welches Format Du brauchst.

Gruß - WPö

Re: Screenshot

Verfasst: 08.10.2012 11:16
von NicTheQuick
Man könnte auch unter Windows einen PDF-Druckertreiber nehmen und die Bilder einfach in ein PDF drucken.
Unter Linux könnte man das ImageMagick Paket installiert und dann mit 'convert' Bilder in ein PDF konvertieren.

Re: Screenshot

Verfasst: 08.10.2012 11:44
von Martin66119
hallo NicTheQuick!

genau das suche ich. Nur wie geht das? Ich habe Adobe als PDF-Erstellungsprogramm.

Grüße
Martin

Re: Screenshot

Verfasst: 08.10.2012 12:10
von NicTheQuick
Du gehst auf Google und suchst "pdf drucker windows" und findest unter anderem diese beiden hübschen Links:
PDFCreator und Free PDF 4.

Wie man jetzt unter Purebasic druckt ist aber wieder ein anderes Thema.

Re: Screenshot

Verfasst: 08.10.2012 12:34
von Martin66119
Hallo Nic,

den PDFCreator kenne ich und habe ich auch schon verwendet. Da ich aber eine "Alte" Version von Adobe bekommen hatte, benutze ich diese im Moment.

Re: Screenshot

Verfasst: 08.10.2012 17:12
von Martin66119
Hallo!
Folgenden Code habe ich im Forum gefunden. Lediglich in der Repeat-Schleife habe ich ein paar Zeilen hinzugefügt. Nun wird bei jedem Tastendruck ein Screenshot gemacht und als Bild gespeichert. Das ganz funktioniert bestens auf meinem Rechner (Win7). Doch wenn ich nun der Compilierten Code auf einem anderen Rechner Starte (Windows XP Rechner im Büro), hängt sich das Programm auf. Aber warum?

Wenn ich nun bei jedem Tastendruck das Bild in ein PDF-Dokument anhängen könnte oder bei Programmende alle Bilder zusammen in ein PDF-einbinden könnte wäre das optimal.

Code: Alles auswählen

Procedure.l CaptureScreen()
ExamineDesktops()
width = DesktopWidth(0)
height = DesktopHeight(0)
srcDC = CreateDC_("DISPLAY", "", "", dm.DEVMODE)
trgDC = CreateCompatibleDC_(srcDC)
BMPHandle = CreateCompatibleBitmap_(srcDC, width, height)
SelectObject_( trgDC, BMPHandle)
BitBlt_( trgDC, 0, 0, width, height, srcDC, 0, 0, #SRCCOPY)
DeleteDC_( trgDC)
ReleaseDC_(BMPHandle, srcDC)
CreateImage(0, width, height, 32)

StartDrawing(ImageOutput(0))

DrawImage(BMPHandle, 0, 0)
StopDrawing()

DeleteObject_(BMPHandle)
EndProcedure
i = 0
OpenWindow(1,0,0,40,40,"Fenster")

Repeat
  state=GetKeyState_(#VK_F12)
  
  If state<>0 And state<>1
     i = i+1
     CaptureScreen()
     ResizeImage(0,640,480)
     Name.s= "f:\Ablauf\Copy" + StrU(i, #PB_Byte) +".png"
     SaveImage(0, Name.s)
   EndIf
 Until WaitWindowEvent()=#WM_CLOSE