Screenshot mit PB machen und als Datei abspeichern?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Screenshot mit PB machen und als Datei abspeichern?

Beitrag von Kyoko12 »

Hi,

ich hab hier n Problem: ich will mit PB einen Screenshot machen, hab aber keinen Schimmer, wie das geht. Gibts vll. ne Userlib, die mir ermöglicht, nen Screenshot zu machen und diesen als Bitmap, JPEG, PNG, TIFF, oder GIF graphik abzuspeichern? Bevorzugt JPEG.

Danke im Vorraus
Kyoko12
Hallo, ich bin eine Sig...(ENDE DER DEMOVERSION, BITTE VOLLVERSION KAUFEN!)

PB 3.92
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Im CodeArchiv hab ich min. 15 Treffer bei Screenshot. Hier im Forum hab ich nicht getestet.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

Also, im Code Archiev find ich nur einen Eintrag, udn der heißt Transparent Screenshot...meiner soll aber nicht transparent sein. Hier im Forum hab ich auch nix passendes gefunden.

mfg
Kyoko12
Hallo, ich bin eine Sig...(ENDE DER DEMOVERSION, BITTE VOLLVERSION KAUFEN!)

PB 3.92
Benutzeravatar
Ja!
Beiträge: 271
Registriert: 02.01.2006 16:13
Wohnort: Stuttgart

Beitrag von Ja! »

Hi,

das ist recht einfach, es gibt einen Befehl dafür.


Aus der Hilfe:

Code: Alles auswählen

GrabSprite(#Sprite, x, y, Breite, Hoehe [, Modus])

Fotografiert ("grab") den Bildschirminhalt im Bereich von (x, y, Breite, Höhe) und erstellt daraus ein neues #Sprite. In der Kombination von Grabsprite und SaveSprite() ist es somit z.B. möglich, einen Screenshot eines Spiels zu erstellen. 
Gruß
Udo
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

ah, danke ^^
Hallo, ich bin eine Sig...(ENDE DER DEMOVERSION, BITTE VOLLVERSION KAUFEN!)

PB 3.92
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Also, im Code Archiev find ich nur einen Eintrag
Mir zeigt der CodeArchiveViewer genau 10 an :mrgreen:
zum Beispiel diesen hier:

Code: Alles auswählen

; www.purearea.net (Sourcecode collection by cnesm)
; Author:
; Date: 22. November 2003

Procedure MakeDesktopScreenshot(ImageNr,x,y,Width,Height) 
   hImage = CreateImage(ImageNr,Width,Height) 
   hdc    = StartDrawing(ImageOutput()) 
   DeskDC = GetDC_(GetDesktopWindow_()) 
      BitBlt_(hdc,0,0,Width,Height,DeskDC,x,y,#SRCCOPY) 
   StopDrawing() 
   ReleaseDC_(GetDesktopWindow_(),DeskDC) 
   ProcedureReturn hImage 
EndProcedure

MakeDesktopScreenshot(0, 0, 0, 1024, 768) 
SaveImage(0, "C:\DesktopScreenshot.bmp")
Recherieren gehört auch zu den wichtigen Fähigkeiten eines Programmierers :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

hm...komisch...mir zeigts echt nur einen an...

naja, egal.

Mit diesem Code hab ihc n Problem...die Prozedur gibt hImage zurück, das ist doch der Identifier des neuen Bildes oder?? Wie kann ich dieses Bild jetzt speichern???

sorry das ich so nervig bin, brauch das echt dringend ^^

mfg
kyoko12
Hallo, ich bin eine Sig...(ENDE DER DEMOVERSION, BITTE VOLLVERSION KAUFEN!)

PB 3.92
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

hdc    = StartDrawing(ImageOutput(0))
Nur die 0 einfügen

Du übergibst doch die ImageNr., erster parameter. Die Rückgabe kannste
ignorieren, bzw. nur zum testen ob <> 0, also Erfolg
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kyoko12
Beiträge: 45
Registriert: 22.11.2004 20:56

Beitrag von Kyoko12 »

hää?? :shock:

kapier ich immer noch nicht...ImageOutput(0)?? Bei mir steht in der hilfe, das ImageOutput() gar keine Parameter hat?

Und wenn mir der Code den Screen dann in ein Image zeichnet, wie speichere ich das dann zB als JPEG-Datei ab??

danke für eure hilfe

mfg
kyoko12



ah, sorry, hatte übersehen dass die lösung ja schon im code oben steht

diesen Post einfach ignorieren
Hallo, ich bin eine Sig...(ENDE DER DEMOVERSION, BITTE VOLLVERSION KAUFEN!)

PB 3.92
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> kapier ich immer noch nicht...ImageOutput(0)??
Dann schreib mal bitte Deine PB-Version in die Signatur, ansonsten gehe ich
von der aktuellen Version aus, dort ist die 0 erforderlich!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten