Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 249502 (10938)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Bitmap aus Zwischenablage in Datei speichern
Brita Schmidt
| Datum:22.08.01 17:37 (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 (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 (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 (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 (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 (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