Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249502 (10938)
  Suchen
 Zurück zur Übersicht
 AutorThema: Bitmap aus Zwischenablage in Datei speichern
Brita Schmidt
Datum:22.08.01 17:37 Antwortenals Email verschicken (writer@stories.short.de) 


Hi @all,
ich hab mal eine Frage:
Nachdem ich mit Sebastians Hilfe (thx noch mal :-)) einen automatischen Screenshot erstellen kann, stehe ich nun vor dem Problem, wie ich die in der Zwischenablage liegende Bitmap in eine Datei speichern kann (das ganze soll ohne "Speichern"-Dialog vor sich gehen, der Name wird automatisch vergeben). Es gibt zwar jede Menge schöner Befehle, wie man BMP's IN die Zwischenablage oder diese in ein PROFAN-Fenster lädt, aber ich hab' nix gefunden, um das eben so hinzukriegen, wie oben gesagt. Ich hab auch schon das Forums-Archiv durchsucht, leider ohne Ergebnis.
Wäre nett, wenn mir einer weiterhelfen könnte ... :-)
BriS


Jörg Sellmeyer
Datum:22.08.01 18:29 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo Britta,
mit:
StartPaint -1
SaveBmp "TESTBILD.BMP",10,10-200,140
EndPaint
sollte es klappen.
Viele Grüße
Jörg



Britta Schmidt
Datum:24.08.01 09:12 Antwortenals Email verschicken (writer@stories.short.de) 


Hallo,
danke für den Versuch, aber das klappt leider nicht - es erscheint immer nur eine Fehlermeldung, daß die Bitmap nicht gespeichert werden kann.
Das muß doch irgendwie gehen???
BriS


Sebastian Sprenger
Datum:24.08.01 14:38 Antwortenals Email verschicken (prof.chaos@netcologne.de) 


Hallo Britta,
vor dem Startpaint musst du noch mit

mcls 200,140
eine Speicherbitmap mit der Größe 200 × 140 (oder wie groß auch immer) erzeugen.
Gruß,
Sebastian


Uwe ''Pascal'' Niemeier
Datum:25.08.01 11:03 Antwortenals Email verschicken (Pascalxd@owl-online.de) 


Hallo Leute!

Soweit ich das sehe, wird bei Sebastians Demos das Bild in die Zwischenablage gepackt und *nicht* in die Profan-eigene Speicherbitmap.

Hier ein Beispiel, daß Britta helfen könnte
(Nicht sehr elegant, aber was besseres fällt mir im Moment nicht ein):

window 50,50-300,300
'---Fenster darf auch kleiner sein als das Pic im Clipboard!

def IsClipboardFormatAvailable(1) !"USER32","IsClipboardFormatAvailable"
def LockWindowUpdate(1) !"USER32","LockWindowUpdate"
declare Test&,x%,y%

'--------------------------------------Abfrage, ob Bild in Clipboard
Test&=IsClipboardFormatAvailable(2)'---2=CF_BITMAP
ifnot Test&
	messagebox("Kein Bild in der Zwischenablage!","Fehler!",0)
	end
endif
'--------------------------------------------------------------------

'------------------------normaler Bildinhalt & diverse Dialogelemente
print "Hallo,Test"
print 
create("Button",%hwnd,"Test",10,60,50,22)
create("Edit",%hwnd,"...Laber...",10,90,100,22)
'--------------------------------------------------------------------

x%=width(%hwnd)
y%=height(%hwnd)
mcls x%,y%'---------------------Speicherbitmap anlegen
copybmptomem 0,0-x%,y% > 0,0'---Bildinhalt in Speicherbitmap sichern

LockWindowUpdate(%hwnd)'--------Fenster "einfrieren", damit man nichts sieht ;-)
cliploadbmp 0,0;0'--------------Bild aus Clipboard ins Fenster

savebmp "C:\2test\Test.bmp",0,0-%bmpX,%bmpY'--Bild speichern (Pfad bitte anpassen!!)

mcopybmp 0,0-x%,y% > 0,0;0'-----alten Bildinhalt wiederherstellen
LockWindowUpdate(0)'------------Fenster "auftauen"

print "Bild wurde gespeichert"

waitkey


HTH
Pascal


Uwe ''Pascal'' NIemeier
Datum: 25.08.01 11:25 Antwortenals Email verschicken (Pascalxd@owl-online.de) 


Oh,Oh...

Da hab' ich vor lauter Bäumen den Wald nicht gesehen :-(
Jörg S. und Sebastian S. hatten recht: Es geht *direkt* über die Speicherbitmap wesendlich einfacher:

window 50,50-600,300

startpaint -1
cliploadbmp 0,0;0'---Dummy-Aktion, um %bmpX & %bmpY zu setzen
endpaint

mcls %bmpX,%bmpY'----Speicherbitmap anlegen
startpaint -1
cliploadbmp 0,0;0
savebmp "C:\2test\Bild.bmp",0,0-%bmpX,%bmpY'--Bild speichern
endpaint


Sorry, Leute!

Pascal




 Zurück zur Übersicht