Deutsch
Forum

lighten

 

Rolf
Leinung
Hallo,

ich habe ein Problem mit dem lighten eines Bildes...
KompilierenMarkierenSeparieren
proc hellmacher

    declare hdc1&,array1&,array2&
    hdc1&=CreateExtBmp(%hdc,800,600)
    CopyExtBmp(hdc1&,0,0,800,600,%Hdc,0,0,0)
    array1&=InitExtFX(hdc1&)

    WhileLoop 140

        lighten(%HDC,0,0,array1&,2)

    EndWhile

endproc

proc dunkelmacher

    declare hdc1&,array1&,array2&
    hdc1&=CreateExtBmp(%hdc,800,600)
    CopyExtBmp(hdc1&,0,0,800,600,%Hdc,0,0,0)
    array1&=InitExtFX(hdc1&)

    WhileLoop 140

        darken(%HDC,0,0,array1&,2)

    EndWhile

endProc

LoadBmp bild.bmp,0,0,0
dunkelmacher
sleep 3000
hellmacher

Das mit dem dunklen machen klappt gut.
Nun möchte ich das Gleiche Bild wieder aufhellen. Mit lighten klappt das leider nicht
so wie ich das gemacht habe. Kann mir da jemand einen Ratschlag geben?

Freundliche Grüße,

Rolf
 
21.02.2008  
 




Frank
Abbing
Hab grad getestet, läuft doch perfekt. Lädt dein Prog die Dll vielleicht nicht?
Und bitte nur lauffähige Codes testen! [web]https://xprofan.com/hilfe/textb/minimalbeispiel/[/web]
 
21.02.2008  
 




Rolf
Leinung
Die Dll wird geladen. Sonst würde es sich ja nicht abdunkeln.
Das abdunkeln funktioniert ja auch. Aber das aufhellen nicht. Der Bildschirm wird zwar aufgehellt, bis er weiß ist, aber das Bild wird nicht eingefadet.

Freundliche Grüße,

Rolf
 
21.02.2008  
 




Rolf
Leinung
okay, hier nochmal als ganzer qc.
KompilierenMarkierenSeparieren
declare neu&
 $I  prospeed_Funktionen.inc
neu&=usedll(dll/ProSpeed.dll)
@Set(TrueColor, 1)
Window 0,0-800,600

proc hellmacher

    declare hdc1&,array1&,array2&
    hdc1&=CreateExtBmp(%hdc,800,600)
    CopyExtBmp(hdc1&,0,0,800,600,%Hdc,0,0,0)
    array1&=InitExtFX(hdc1&)

    WhileLoop 140

        lighten(%HDC,0,0,array1&,2)

    EndWhile

endproc

proc dunkelmacher

    declare hdc1&,array1&,array2&
    hdc1&=CreateExtBmp(%hdc,800,600)
    CopyExtBmp(hdc1&,0,0,800,600,%Hdc,0,0,0)
    array1&=InitExtFX(hdc1&)

    WhileLoop 140

        darken(%HDC,0,0,array1&,2)

    EndWhile

endProc

loadbmp grafik/bild.bmp, 0, 0;0
dunkelmacher
sleep 3000
hellmacher
sleep 3000
end
 
21.02.2008  
 




Frank
Abbing
Die Funktion macht in deinem Code, was sie soll. Du verdunkelst den Bildschirn zu einer schwarzen Fläche und machst ihn dann wieder heller bis er weiss ist. Während dieser Zeit werden deine Bilddaten natürlich kontinuierlich geändert, sodass das Ausgangsbild längst verloren ist. Lighten() macht das Bild immer heller, und bei einer schwarzen Ausgangsfläche wird es somit weiss!
Wenn du die dunkle Fläche wieder zu einem Bild aufhellen willst, musst du AlphaTrans() oder SemiTrans() verwenden. In der Anleitung findest du Beispiele dazu.

Und bitte Sourcecode hier in Codetags setzen! So, nur ohne Leerzeichen:

[ code] Hier steht Quellcode [ /code]
KompilierenMarkierenSeparieren
fxhandle1&=LoadExtBmp(0,%hdc)                                  Handle 1: leere Bitmap erzeugen
name$=Bild.bmp
fxhandle2&=LoadExtBmp(addr(name$),%hdc)                        Handle 2: Bild laden, z.B. 640x480 groß
CopyExtBmp(fxhandle1&,0,0,640,480,%HDC,0,0,0)                  Inhalt des Profanfensters nach Handle 1
bytearray1&=InitExtFX(fxhandle1&)                              Byte-Array zu Handle 1 erzeugen
bytearray2&=InitExtFX(fxhandle2&)                              Byte-Array zu Handle 2 erzeugen

WhileLoop 100

    SemiTrans(%HDC,0,0,bytearray2&,bytearray1&,&loop)            Das Bild wird in 100 Schritten in die
    Wend                                                           Hintergrundgrafik eingeblendet
    FreeExtFX(bytearray1&)                                         Byte-Array 1 wieder freigeben
    FreeExtFX(bytearray2&)                                         Byte-Array 2 wieder freigeben
    FreeExtBmp(fxhandle1&)                                         Handle 1 wieder freigeben
    FreeExtBmp(fxhandle2&)                                         Handle 2 wieder freigeben
 
21.02.2008  
 




Rolf
Leinung
Danke für die rasche Antwort.
kann es sein das sich da irgendwo noch ein Fehler befindet?
KompilierenMarkierenSeparieren
declare fxhandle1&, name$,bytearray1&, fxhandle2&,bytearray2&, neu&
 $I  incprospeed_Funktionen.inc
neu&=usedll(dll/ProSpeed.dll)
@Set(TrueColor, 1)
Window 0,0-800,600
fxhandle1&=LoadExtBmp(0,%hdc)Handle 1: leere Bitmap erzeugen
name$=bild.bmp
fxhandle2&=LoadExtBmp(addr(name$),%hdc)Handle 2: Bild laden, z.B. 640x480 groß
CopyExtBmp(fxhandle1&,0,0,640,480,%HDC,0,0,0)Inhalt des Profanfensters nach Handle 1
bytearray1&=InitExtFX(fxhandle1&)Byte-Array zu Handle 1 erzeugen
bytearray2&=InitExtFX(fxhandle2&)Byte-Array zu Handle 2 erzeugen

WhileLoop 100

    SemiTrans(%HDC,0,0,bytearray2&,bytearray1&,&loop)Das Bild wird in 100 Schritten in die
    EndWhile Hintergrundgrafik eingeblendet
    FreeExtFX(bytearray1&)Byte-Array 1 wieder freigeben
    FreeExtFX(bytearray2&)Byte-Array 2 wieder freigeben
    FreeExtBmp(fxhandle1&)Handle 1 wieder freigeben
    FreeExtBmp(fxhandle2&)Handle 2 wieder freigeben

Das Program startet kurz, und wird sofort wieder beendet. Passieren tut aber nix.

Freundliche Grüße,

Rolf
 
21.02.2008  
 




Rolf
Leinung
Dein Fehler steckt in dieser Zeile:

fxhandle1&=LoadExtBmp(0,%hdc)Handle 1: leere Bitmap erzeugen


> Eine leere Bitmap erzeugst du aber mit CreateExtBmp().

Hallo Frank,

Mein Fehler steht in Deiner Prospeed-Anleitung genau so zu SemiTrans
Vielleicht bei einem Update mal anpassen, eh da noch mehr drüber stolpern, die ähnlich wenig Ahnung haben wie ich

Freundliche Grüße,

Rolf
 
22.02.2008  
 



@Rolf: Es wäre mehr als höflich wenn Du Deine Postings überarbeitest und das Code-Tag wie von Frank bereits erklärt korrekt anwendest. Wenn es alle schaffen wirds bei Dir auch klappen.

Mfg, Chuck Norris. (Achte meinen RoundHouseKick welcher Dich pulverisiert durch die mieseste auf der Erde existierende Kanalisation jagen kann in der Du verteilt Dein übriges Dasein fristen würdest! )
 
22.02.2008  
 




Frank
Abbing

Mein Fehler steht in Deiner Prospeed-Anleitung genau so zu SemiTrans
Vielleicht bei einem Update mal anpassen, eh da noch mehr drüber stolpern, die ähnlich wenig Ahnung haben wie ich


Ah jetzt ja.
Ich war fälschlicherweise von LoadExtImage() ausgegangen... LoadExtBmp() darf als ersten Parameter eine Null beinhalten. In dem Fall entspricht die Grösse der neuen Bitmap die der maximalen Größe des aktuellen Bildschirms (%maxx, %maxy). Die Größe der anderen Bitmap aber beträgt eine andere und darum kracht es.
Ich werde meine Hilfe dahingehen ändern, danke! Bin ja sowieso mit Version 3.0 der ProSpeed beschäftigt.
 
22.02.2008  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

1.795 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Rolf Leinung (5x)
Frank Abbing (3x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie