Autor | Thema: farbverlauf mit cls | | Datum:17.12.01 16:47 
| |
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.
|
| | Datum:17.12.01 17:04 
(mrk@mrk-soft.de) | |
Hi,
so kann das auch nicht Funktionieen.
Am einfachsten gets mit der PROSPEED DLL,
Aufweniger mit Profan über API.
|
| | Datum:17.12.01 22:57 
(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
|
| | Datum:18.12.01 00:32 
(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
|
| | Datum:18.12.01 07:26 
(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
|
| | Datum:18.12.01 16:49 
| |
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.
|
| | Datum:18.12.01 16:59 
| |
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.
|
| | Datum:18.12.01 20:11 
(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
|
| | Datum:18.12.01 20:19 
(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
|
| | Datum:19.12.01 16:33 
| |
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
|
| | Datum:19.12.01 17:31 
(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
|
| | Datum:19.12.01 19:52 
| |
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.
|
| | Datum: 19.12.01 23:17 
(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
|
|
|