Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249300 (10736)
  Suchen
 Zurück zur Übersicht
 AutorThema: farbverlauf mit cls
Mathias Kranze
Datum:17.12.01 16:47 Antwortenals Email verschicken  


x%=0
y%=0
z%=0
Schlafe 90
WHILELOOP 32
Cls @RGB(x%,y%,z%)

ADD x%,1
ADD y%,1
ADD z%,1
MOMENTBITTE 40 <--------------Des hier ist mein sleep befehl
ENDWHILE

-----

hallo

ich habe hier versucht, einen bildverlauf zu machen und dabei von schwarz zu weiss zu gelangen. nun habe ich aber das ewig wiederkehrende Problem mit dem geplitze beim abspielen.

gibts da net irgendwie ne möglichkeit, einen ordentlichen Farbverlauf zu bekommen, ohne ein solches geplitze?

Danke für eure Hilfe.

Mfg

Mathias K.


Thorsten
Datum:17.12.01 17:04 Antwortenals Email verschicken (mrk@mrk-soft.de) 


Hi,

so kann das auch nicht Funktionieen.

Am einfachsten gets mit der PROSPEED DLL,
Aufweniger mit Profan über API.




Bernhard Künzel
Datum:17.12.01 22:57 Antwortenals Email verschicken (b.kuenzel@chello.at) 


Hallo Mathias,
hier eine Lösung in Profan
habe dir zwei Möglichkeiten geschrieben WhileLoop oder WhileNot
je nach Profanversion

SetTrueColor 1
Def ColMixX&(4) RGB(Add(GetRValue(&(1)),Div(Mul(%(4),Sub(GetRValue(&(2)),GetRValue(&(1)))),%(3))),\
Add(GetGValue(&(1)),Div(Mul(%(4),Sub(GetGValue(&(2)),GetGValue(&(1)))),%(3))),\
Add(GetBValue(&(1)),Div(Mul(%(4),Sub(GetBValue(&(2)),GetBValue(&(1)))),%(3))))
'Par1=Anfangsfarbe
'Par2=Endfarbe
'Par3=ges. Anzahl Abstufungen
'Par4=X-ste Abstufung
'Ergebnis: Neuer Farbcode

Proc ClFenster
Parameters Cvon&,Cbis&
Declare CB%,Y%',i%
CB%=Div(Height(%HWnd),5)
'i%=0
UsePen 5,0,0 '// Rand unterdrücken
'WhileNot GT(i%,CB%)
WhileLoop 0,CB%
UseBrush 1,ColMixX&(Cvon&,Cbis&,CB%,&Loop)
Y%=Add(Div(Mul(Add(&Loop,2),Height(%HWnd)),CB%),0)
Rectangle 0,Add(Div(Mul(&Loop,Height(%HWnd)),CB%),0)-\
Add(Width(%HWnd),1),If(GT(Y%,Height(%HWnd)),Add(Height(%HWnd),1),Y%)
'Inc i%
Wend
EndProc

Window 0,0-%MaxX,%MaxY
ClFenster RGB(0,0,255),RGB(255,0,0)
WaitInput

MFG
Bernhard



Bernhard Künzel
Datum:18.12.01 00:32 Antwortenals Email verschicken (b.kuenzel@chello.at) 


Hallo Mathias,
du kannst die Procedur noch um einen Parameter erweitern, der die Möglichkeit zur Auswahl hat, direkt auf das Fenster zu zeichnen oder über die Speicher-Bitmap

Änderungen:
Parameter Cvon&,Cbis&,Flag%
bei Flag%=0 wird direkt in das Fenster gezeichnet
bei Flag%=1 wird in die Speicher-Bitmap gezeichnet

>>>vor UsePen einfügen
If Flag%
MCLS Width(%hWnd),Height(%hWnd)
StartPaint -1
EndIf
>>>nach Wend einfügen
If Flag%
EndPaint
MCopyBmp 0,0-Width(%hWnd),Height(%hWnd)>0,0;0
EndIf

MFG
Bernhard



Robert Zerer
Datum:18.12.01 07:26 Antwortenals Email verschicken (info@software-technik-zerer.de) 


Am Einfachsten ist es ein Bitmap mittels Grafikprogramm zu erstellen (kann auch viel kleiner als der Desktop sein).

Du kannst aber nur so viele verschiedene Farbpunkte erzeugen wie insgesamt Pixel im Bitmap sind. Eine gute Größe ist 256 x 256 Pixel der Qellbitmap.

Beim Programmstart zegst Du das Bitmap gestreckt an - fertig.

MfG
Robert


Mathias Kranze
Datum:18.12.01 16:49 Antwortenals Email verschicken  


Thorsten, Bernhard Künzel und Robert Zerer, danke für eure Hilfe ich werde eure Hinweisse/Quelltexte testen.

es gibts die doch noch....freundliche hilfsbrereite Menschen.

mfg

Mathias K.




Mathias Kranze
Datum:18.12.01 16:59 Antwortenals Email verschicken  


Ich glaube ich habe mich dabei etwas flasch audgedrückt. Ich möchte erst einen ganz schwarzen Bildschirm, der dann zu weiss wird, keinen Farbverlauf.

MFG

M.K.


Frank Abbing
Datum:18.12.01 20:11 Antwortenals Email verschicken (frankabbing@12move.de) 


Hallo Mathias,

du kannst dir gerne meine ProSpeed.dll ansehen, die speziell für Profan entwickelt wurde. Solche Effekt, sogar Überblendungen von zwei Bildern usw. sind kein Problem, und alles ohne zu flackern...
Um vorher zu testen, ein Demo für solche Effekte liegt auch auf meiner Homepage.

http://www.12move.de/home/frankabbing/

Gruß, Frank


Bernhard Künzel
Datum:18.12.01 20:19 Antwortenals Email verschicken (b.kuenzel@chello.at) 


Hallo Mathias,
von einer Farbe auf eine andere, das geht auch

SetTrueColor 1
Def ColMix100&(3) RGB(Add(GetRValue(&(1)),Div(Mul(%(3),Sub(GetRValue(&(2)),GetRValue(&(1)))),100))\
,Add(GetGValue(&(1)),Div(Mul(%(3),Sub(GetGValue(&(2)),GetGValue(&(1)))),100)),\
Add(GetBValue(&(1)),Div(Mul(%(3),Sub(GetBValue(&(2)),GetBValue(&(1)))),100)))
'Par1=Anfangsfarbe
'Par2=Endfarbe
'Par3=Prozent Abstufung von 0-100
'Ergebnis: Neuer Farbcode

Window 0,0-%MaxX,%MaxY
UsePen 5,0,0
ShowCursor 0
WhileLoop 0,100
UseBrush 1,ColMix100&(0,RGB(255,255,255),&Loop)
Rectangle 0,0-Width(%hWnd),Height(%hWnd)
Wend
ShowCursor 1
WaitInput

MFG
Bernhard




Mathias Kranze
Datum:19.12.01 16:33 Antwortenals Email verschicken  


an Bernhard Künzel:

Genau das, was ich suche...

an Frank Abbing:

Deine DLL habe ich schonmal getestet und sie ist klasse aber für einen solchen zweck, der vielleicht nur 3 sekunden dauernd benötige ich keine ganze DLL. Wenn ich mehr vorhabe werde ich darauf zurückgreifen.

mfg




Frank Abbing
Datum:19.12.01 17:31 Antwortenals Email verschicken (frankabbing@12move.de) 


Hallo,

kein Problem!
Aber Bernhards Lösung fehlt noch ein Timing. Auf meinem Pentium 4/1800 konnte ich keine Abstufung der Farben erkennen, lief zu schnell...

Gruß, Frank


Mathias Kranze
Datum:19.12.01 19:52 Antwortenals Email verschicken  


Das mit dem timer ist schon erledigt. Der Farbverlauf geh zwar sehr schnell aber ich kann auch ohne einen timer einen Übergang von Schwarz zu Weiss erkennen. Mit Timer gibts wieder geplitze.

Mfg

Euer Mathias K.


Bernhard Künzel
Datum: 19.12.01 23:17 Antwortenals Email verschicken (b.kuenzel@chello.at) 


Hallo Mathias,
setze nach Rectangle ein Sleep x ein, dann geht es mit Verzögerung auch ohne geplitze. Ich habe es mit Sleep 10 versucht.
MFG
Bernhard


 Zurück zur Übersicht