Klassen für Farben und Farbverläufe

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

 

timmeTheOnly

Betreff: Klassen für Farben und Farbverläufe

BeitragDi, Aug 23, 2011 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Community,

seit ich mit C# gearbeitet hab kann ich das Farbsystem in BlitzBasic nicht mehr sehen. Darum hab ich eben eine Klasse für Farben und also kleines Extra für Farbverläuft hingeklatscht.

Ich hoffe es ist dem ein oder anderen nützlich

Anregungen, Kritik und auch Kommentare erwünscht Wink

BlitzMax: [AUSKLAPPEN]
Type Color
Field r:Byte, g:Byte, b:Byte, a:Byte

Function Add:Color(r:Byte,g:Byte,b:Byte,a:Byte=255)
Local temp:Color = New Color

temp.r = r
temp.g = g
temp.b = b
temp.a = a

Return temp
End Function
Function Set(Color:Color)
SetAlpha Color.a / 255:Float
SetColor Color.r, Color.g, Color.b
End Function

Method Get:Byte[] ()
Local temp:Byte[]

temp = [Self.r, Self.g, Self.b, Self.a]

Return temp
End Method

Global Black:Color = Color.Add(0, 0, 0)
Global White:Color = Color.Add(255, 255, 255)
Global Red:Color = Color.Add(255, 0, 0)
Global Green:Color = Color.Add(0, 255, 0)
Global Blue:Color = Color.Add(0, 0, 255)
End Type

Type Gradient
Field Gradings:Int
Field Colors:Color[]

Function Add:Gradient(Color1:Color, Color2:Color, Gradings:Int = 255)
Local temp:Gradient = New Gradient
Local i:Int, p:Float

temp.Gradings = Gradings
temp.Colors = New Color[Gradings + 1]

For i = 0 To Gradings
p = i / Float(Gradings)

temp.Colors[i] = Color.Add(Byte(Color1.r + (Color2.r - Color1.r) * p), Byte(Color1.g + (Color2.g - Color1.g) * p), Byte(Color1.b + (Color2.b - Color1.b) * p), Byte(Color1.a + (Color2.a - Color1.a) * p))
Next

Return temp
End Function

Method Get:Color[] ()
Local i:Int, temp:Color[]

temp = New Color[Self.Gradings]

For i = 0 To Self.Gradings
temp[i] = Self.Colors[i]
Next

Return temp
End Method
End Type

' Demo

Graphics 1024, 768, 0

Global Pink:Color = Color.Add(255, 0, 255)
Global GreenToBlue:Gradient = Gradient.Add(Color.Green, Color.Blue, 1024)

For i:Int = 0 To 1024
Color.Set(GreenToBlue.Colors[i])
DrawLine i, 0, i, 600
Next

Color.Set(Pink)
DrawRect 0, 600, 1024, 168

Flip

WaitKey
End


Code: [AUSKLAPPEN]
Kleine Erklärung:

------------------------------------
|                 Color                 |
------------------------------------

Funktionen:

Add:Color (r:byte, g:byte, b:byte, a:byte=255)
    Gibt ein neues Objekt der Klasse Color zurück und Initialisiert dessen Variablen (Konstruktor)

Set (Color:Color)
    Setzt die übergebene Farbe


Methoden:

Get:Byte[] ()
    Gibt eine Farbe als Byte-Array im Format r , g , b , a zurück


Zusätzlich sind schon einige Standardfarben enthalten die mit Color.Farbe aufgerufen werden können (Blau: Color.Blue)

------------------------------------
|               Gradient              |
------------------------------------

Funktionen:

Add:Gradient (Color1:Color, Color2:Color, Gradings:int)
    Gibt ein neues Objekt der Klasse Color zurück und Initialisiert dessen Variablen (Konstruktor)
   
    Parameter: Color1: Erste Farbe, Color2: Zweite Farbe, Gradings: Abstufungen


Methoden:

Get:Byte[] ()
    Gibt einen Farbverlauf als Color-Array zurück


[EDIT]

Sorry, hatte noch eine alte Version in der Zwischenablage

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group