Farbverlauf ich hasse dich

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Der Eisvogel

Betreff: Farbverlauf ich hasse dich

BeitragDi, Aug 25, 2009 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Ich versuche einen Farbverlauf in ein Pixmap zu malen, aber leider wird aus dem Farbverlauf nix. Evil or Very Mad
Code: [AUSKLAPPEN]
Local pixmap:TPixmap=CreatePixmap(400,400,PF_RGBA8888)
For Local x:Int=0 To 399
   For Local y:Int=0 To 149
      WritePixel(pixmap,x,y,$FF87CEEB)
   Next
   For Local y:Int=150 To 249
      Local r:Float=135/100.0*(250-y)
      Local g:Float=206/100.0*(250-y)
      Local b:Float=185/100.0*(250-y)+50
      WritePixel(pixmap,x,y,$FF000000+r*$10000+g*$100+b)
   Next
   For Local y:Int=250 To 399
      WritePixel(pixmap,x,y,$FF000032)
   Next
Next
Local background:TImage=LoadImage(pixmap)


EDIT: ich habe mir auch schon die RGB-Wete angeguckt, aber die Stimmen.

Was mache ich falsch in BB übersetzt funktioniert das Prima.

Danke für eure Hilfe.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Xeres

Moderator

BeitragDi, Aug 25, 2009 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde dir empfehlen ClearPixels zu benutzen damit später keine Fragmente zu sehen sind. Ansonsten muss man nur in die passenden Typen Casten...

BlitzMax: [AUSKLAPPEN]
SuperStrict
Graphics(400, 400)

Local pixmap:TPixmap = CreatePixmap(400, 400, PF_RGBA8888)
pixmap.ClearPixels($FF87CEEB)
For Local x:Int=0 To 399
For Local y:Int = 150 To 249
Local r:Float = 135.0 / 100.0 * Float(250 - y)
Local g:Float = 206.0 / 100.0 * Float(250 - y)
Local b:Float = 185.0 / 100.0 * Float(250 - y) + 50.0
pixmap.WritePixel(x, y, $FF000000 + Int(r) * $10000 + Int(g) * $100 + Int(b))
Next
For Local y:Int=250 To 399
WritePixel(pixmap,x,y,$FF000032)
Next
Next
Local background:TImage = LoadImage(pixmap)
DrawImage(background, 0, 0)
Flip
WaitKey
End
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Der Eisvogel

BeitragDi, Aug 25, 2009 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Wo ist das Problem in meinem Code? Der ist doch gleich nur halt das mit dem ClearPixels, oder?
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Holzchopf

Meisterpacker

BeitragDi, Aug 25, 2009 16:11
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax: [AUSKLAPPEN]
WritePixel(pixmap,x,y,$FF000000+r*$10000+g*$100+b)

Diese Zeile funktioniert so natürlich nur, wenn r, g und b Int sind... Genau diesen Cast hat Xeres auch noch drin. Übrigens kannst du r, g und b auch direkt als Int deklarieren - und schon siehts prima aus Wink

mfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Der Eisvogel

BeitragDi, Aug 25, 2009 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Uff, und warum dürfen die nicht int sein? Ist das einfach so oder gibt es da auch ne logischen Erklärung?
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Holzchopf

Meisterpacker

BeitragDi, Aug 25, 2009 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ganz einfach:
Aufgrund der Arithmetik (und dem Farbformat PR_RGBA8888) werden Farben als Integer so abgespeichert, dass die "vordersten" 8 Bit Alpha ausmachen, dann 8 Bit für Rot, 8 Bit Grün und noch 8 Bit Blau. Ein reines Grün hat also den Wert $0000FF00 oder 65280 oder binär 1111111100000000 - oder eben: 255 *$100, alternativ auch 255 *256, ist das selbe.
Rechnet man aber nun zB 249.9 *256 gibt das 65254.4, was dir vielleicht jetzt noch nix sagt, aber wenn du dir die Zahl gerundet auf 65254 in Hex oder Binär anschaust, sollten bei dir die Alarmglocken läuten:
Hex: $FEE6
Binär: 1111111011100110
(Die rot markierten Ziffern gehören nämlich zu einem anderen Farbanteil - deshalb diese Fraktale)

mfg

PS: Normalerweise antworte ich nicht auf Beiträge, die nicht halb so lang sind wie die darunterstehende Signatur Rolling Eyes Edit: Sorry, ich meine nicht "halb so lang", schliesslich zählt ja nicht die Zeilenzahl sondern die Höhe in Pixel...
Nochnedit: Hat sich erledigt =)
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
  • Zuletzt bearbeitet von Holzchopf am Di, Aug 25, 2009 19:51, insgesamt einmal bearbeitet

Der Eisvogel

BeitragDi, Aug 25, 2009 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke

Zitat:
PS: Normalerweise antworte ich nicht auf Beiträge, die nicht halb so lang sind wie die darunterstehende Signatur Rolling Eyes Edit: Sorry, ich meine nicht "halb so lang", schliesslich zählt ja nicht die Zeilenzahl sondern die Höhe in Pixel...

Du Scherzkeks Wink Ich kann ja wieder den schönen "NICHT KLICKEN"-Link reinmachen Very Happy
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group