Farbpalette [RiesenProblem-ZwergenCode]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

blitzatius

Betreff: Farbpalette [RiesenProblem-ZwergenCode]

BeitragFr, Sep 02, 2005 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Hier erst mal der code von der Farbpalette:
Code: [AUSKLAPPEN]
Graphics 640,480,32,1
stat=1
r=255
g=0
b=0
Repeat
Color r,g,b
Plot x,y
If stat=1 Then
   If g=>255 Then stat=2
   If stat=1 Then If g =< 255 Then g=g+5
EndIf
If stat=2 Then
   If r=<0 Then stat=3
   If stat=2 Then If r=>0 Then   r=r-5
EndIf
If stat=3 Then
   If b=>255 Then stat=4   
   If stat=3 Then If b=<255 Then b=b+5
EndIf
If stat=4 Then
   If g=<0 Then stat=5
   If stat=4 Then If g=>0 g=g-5
EndIf
If stat=5 Then
   If r=>255 Then stat=6
   If stat=5 Then If r=<255 r=r+5
EndIf
If stat=6 Then
   If b=<0 Then stat=1:y=y+1 :x=-1
   If stat=6 Then If b=>0 b=b-5
EndIf
x=x+1
If x=306 And y=306 Then Exit
Until KeyHit(1)
Plot x,y
WaitKey()
End


Sieht eigentlich gut aus, aber ich hätte gerne noch Schwarz und Weiß dabei. Keine Ahnung, wie man das anstellen soll.
Weiß jemand eine Lösung?

Noch was: Irgendwie gefällt mir das nicht : If stat=1... If stat=2... .
Ich glaub, das ganze kann man irgendwie mit sinus und cosinus machen.Oder nicht? Vielleicht wisst ihr etwas.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Sep 02, 2005 23:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi quer, daß hat mich nun auch interessiert, so habe ich mal einen Code dazu geproggt. Der Weißverlauf ist nicht ganz korrekt. Hat aber eben an der Tür geklingelt und so bin ich schon bald los. Ich werd aber den Code morgen weiter ausarbeiten... Der Schwarzverlauf ist aber schon mal OK...

Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer FrontBuffer()

r#=0
g#=0
b#=0


For x#=0 To 191
 For y#=0 To 255
  r=0
  g=0
  b=0

  ;Rotanteil
  If x>128 And x<192 Then r=x-128
  If x>000 And x<064 Then r=64-(x-0)

  ;Grünanteil
  If x>000 And x<064 Then g=x
  If x>063 And x<128 Then g=32-(x-96)

  ;Blauanteil
  If x>064 And x<128 Then b=x-64
  If x>127 And x<192 Then b=32-(x-160)

  ;Überschuss abschneiden
  r=r*8:If r>255 Then r=255
  g=g*8:If g>255 Then g=255
  b=b*8:If b>255 Then b=255

  ;Schwarzverlauf
  If y<128 Then
   r=r*y/128
   g=g*y/128
   b=b*y/128
  End If

  ;Weißverlauf
  If y>127 Then
   If (-256+y*2)>r Then r=-256+y*2
   If (-256+y*2)>g Then g=-256+y*2
   If (-256+y*2)>b Then b=-256+y*2
   If r>255 Then r=255
   If g>255 Then g=255
   If b>255 Then b=255
  End If

  Color r,g,b
  Plot x,y
 Next
Next

FlushKeys
WaitKey
End

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Sep 03, 2005 6:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi quer, jetzt bin ich aus dem Kiez zurrückgekehrt... Hier mal ein Farbverlaub mit Schwarz und Weiß... Mit Sin/Cos würde ich es nicht machen. Da hätte man das Problem, daß zum einem die Farbverläufe (Schwarz zu Farbe zu Weiß) nicht gleichmässig 'schnell' verlaufen, und zum anderem du kein richtiges Gelb (Rot/Grün), Türkis (Grün/Blau) und Lila (Blau/Rot) bekommen würdest. Da die 'Farbspitzen' dann in zB 45° nicht ganz ausgesteuert werden. Mit Sin/Cos würde man allerdings nicht so 'abgehackte' Farbverläufe bekommen...

Hier mal der neue Code:
Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer FrontBuffer()

r#=0   ;Rot
g#=0   ;Grün
b#=0   ;Blau

For x#=0 To 383
 For y#=0 To 255
  r=0
  g=0
  b=0

  ;Rotanteil
  If x>256 And x<384 Then r=x-256
  If x>000 And x<128 Then r=128-x

  ;Grünanteil
  If x>000 And x<128 Then g=x
  If x>127 And x<256 Then g=64-(x-192)

  ;Blauanteil
  If x>128 And x<256 Then b=x-128
  If x>255 And x<384 Then b=64-(x-320)

  ;Überschuss abschneiden
  r=r*4:If r>255 Then r=255
  g=g*4:If g>255 Then g=255
  b=b*4:If b>255 Then b=255

  ;Schwarzverlauf
  If y<128 Then
   r=r*y/128
   g=g*y/128
   b=b*y/128
  End If

  ;Weißverlauf
  If y>127 Then
   r=256-r:r=256-r*(256-y)/128:If r>255 Then r=255
   g=256-g:g=256-g*(256-y)/128:If g>255 Then g=255
   b=256-b:b=256-b*(256-y)/128:If b>255 Then b=255
  End If

  Color r,g,b
  Plot x,y
 Next
Next

FlushKeys
WaitKey
End

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Sep 03, 2005 6:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier nochmal ein Beispiel mit Sin/Cos... Allerdings, wie man austesten kann, hat man kein richtiges Gelb (~max: 200,200,0) usw...
Code: [AUSKLAPPEN]
Graphics 408,204,32,2
SetBuffer FrontBuffer()

ra#=0   ;Radius
wk#=0   ;Winkel
fa%=0   ;Farbe
x%=0   ;X-Position
y%=0   ;Y-Position
r#=0   ;Rot
g#=0   ;Grün
b#=0   ;Blau

;Farbringe
For ra=0 To 100
 For wk=0 To 359
  x=Sin(wk)*ra
  y=Cos(wk)*ra
  r=(128+Sin(wk+000)*127)*(ra/100)
  g=(128+Sin(wk+120)*127)*(ra/100)
  b=(128+Sin(wk+240)*127)*(ra/100)
  Color r,g,b
  Rect 100+x,100+y,4,4,1
  Color 255-r,255-g,255-b
  Rect 304+x,100+y,4,4,1
 Next
Next

;Ermiteln
While Not KeyHit(1)
 Color 0,0,0
 Rect 190,0,26,36,1
 Color 255,255,255
 fa=ReadPixel(MouseX(),MouseY())
 r=(fa And $ff0000)/$10000
 g=(fa And $ff00)/$100
 b=(fa And $ff)
 Text 190,00,Int(r)
 Text 190,12,Int(g)
 Text 190,24,Int(b)
 Delay 10
Wend
End

Firstdeathmaker

BeitragSa, Sep 03, 2005 12:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mal mit dem Code rumgespielt:

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()


r#=0 ;Rot
g#=0 ;Grün
b#=0 ;Blau
hell#=0;Helligkeit

Repeat

For x#=0 To 768
xp# = Sin (x/768*360)
yp# = Cos (x/768*360)

r=0
g=0
b=0

;Rotanteil
If x>768 And x<1024 Then r=x-768
If x>0 And x<256 Then r=x
If x>256 And x<512 Then r=512-x

;Grünanteil
If x>256 And x<512 Then g=x-256
If x>512 And x<768 Then g=768-x

;Blauanteil
If x>512 And x<768 Then b=x-512
If x>768 And x<1024 Then b=1024-x
If x>0 And x<256 Then b=256-x


rtmp# = r+hell
gtmp# = g+hell
btmp# = b+hell

If rtmp>255 rtmp = 255
If gtmp>255 gtmp = 255
If btmp>255 btmp = 255

If rtmp<0 rtmp = 0
If gtmp<0 gtmp = 0
If btmp<0 btmp = 0

Color rtmp,gtmp,btmp


radius = 100

abstand# = 1/radius

LockBuffer BackBuffer()
For rad#=radius To radius-20 Step -0.1
WritePixelFast xp*rad+400,yp*rad+300,a*$1000000 + rtmp*$10000 + gtmp*$100 + btmp
Next
UnlockBuffer BackBuffer

Color 0,0,0
Rect 10,0,100,30

Color 255,255,255
Text 10,10,\"B/W: \"+hell
Text 10,20,\"Cursor Up/Down to change B/W\"
Flip 0

If KeyDown(200) And hell<255 hell = hell + 1
If KeyDown(208) And hell>-255 hell = hell - 1
Next




Until KeyHit(1)
End
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group