Rudimentäre Button-Klasse mit viele Features
Übersicht

SkulkBetreff: Rudimentäre Button-Klasse mit viele Features |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, ich habe mich mal an eine Klasse gemacht, die einen Button zeichnen soll (übrigens auch als Modul verfügbar...aber noch nicht hochgeladen)
Achtung: das Demo-Beispiel erfordert 3 Bilder unter C:\temp - den Punkt könnt ihr aber auch auskommentieren, er dient nur zur Demonstration C:\temp\normal.bmp C:\temp\hover.bmp C:\temp\clicked.bmp Was kann die Button-Klasse? - 3 Stati: Normal, Hover, Clicked - ButtonClick wird erst ausgelöst, wenn MouseButton wieder losgelassen wird - Eigene Schriftarten und -größen - Textschatten (Offset für alle 3 Stati setzbar)# - Jede Farbe der 3 Stati ist konfigurierbar (Hintergrund, Rahmen Akzent1, Rahmen Akzent2, Textfarbe, Textschattenfarbe) - Alphawerte einstellbar (Hintergrund, Rahmen Akzent1, Rahmen Akzent2, Text, Textschatten) - Es können auch Bilder als Buttons verwendet werden (wieder je eines pro Status) Viel Spaß! Code: [AUSKLAPPEN] SuperStrict
' ==================================================================== ' K O N S T A N T E N ' ==================================================================== ' Konstanten für den Displaymode (wie der Button gerendert wird) Const DISPLAYMODE_NORMAL:Byte = 0 ' Normales Rendering durch DrawPoly und DrawRect Const DISPLAYMODE_IMAGES:Byte = 1 ' Rendering durch 3 Images (normal, hover und clicked) ' ==================================================================== ' B U T T O N - C L A S S ' ==================================================================== Type TButton ' Angaben zur Position des Butttons Field x:Int = 0 ' Position des Buttons auf der X-Achse Field y:Int = 0 ' Position des Buttons auf der Y-Achse Field width:Int = 200 ' Breite Des Buttons Field height:Int = 25 ' Höhe des Buttons Field BorderWidth:Int = 2 ' Dicke des Rahmens Field Text:String = "Button" ' Text des Buttons Field DisplayMode:Byte = DISPLAYMODE_NORMAL ' Displaymode (siehe bei Constanten für Erklärung) ' Images wenn Bilder gerendert werden sollen Field ImgNormal:TImage = Null Field ImgHover:TImage = Null Field ImgClicked:TImage = Null ' Alphawerte der Bilder für alle 3 Stati Field ImgNormalAlpha:Float = 1.0 Field ImgHoverAlpha:Float = 1.0 Field ImgClickedAlpha:Float = 1.0 Field Status:Byte = 0 ' Interne Variable über den Status: 0 = Normal, 1 = Hover, 2 = Clicked Field HasBeenClicked:Byte = False ' Wurde der Button geclickt? Field HasCustomFont:Byte = False ' Soll eine eigene Schriftart benutzt werden? Field Font:TImageFont = Null ' Schrift art, die Verwendet wird, wenn HasCustomFont True Field HasTextShadow:Byte = False ' Soll die Beschriftung einen Schatten werfen? ' Schatten-Offsets für Normal, Hover und Clicked Field TextShadowOffsetNormalX:Int = 1 ' Offset des Textschattens X Field TextShadowOffsetNormalY:Int = 1 ' Offset des Textschattens Y Field TextShadowOffsetHoverX:Int = 1 ' Offset des Textschattens X Field TextShadowOffsetHoverY:Int = 1 ' Offset des Textschattens Y Field TextShadowOffsetClickedX:Int = 0 ' Offset des Textschattens X Field TextShadowOffsetClickedY:Int = 0 ' Offset des Textschattens Y ' Farben für den Hintergrund Field BackgroundNormalRGBA:Int = PackRGBA(212, 208, 200, 1) ' Farbwerte in ein Integer gepackt Field BackgroundHoverRGBA:Int = PackRGBA(228, 224, 216, 1) Field BackgroundClickedRGBA:Int = PackRGBA(212, 208, 200, 1) ' Farben für den Rahmen - Accent 1 Field BorderAccent1NormalRGBA:Int = PackRGBA(255, 255, 255, 1) Field BorderAccent1HoverRGBA:Int = PackRGBA(255, 255, 255, 1) Field BorderAccent1ClickedRGBA:Int = PackRGBA(128, 128, 128, 1) ' Farben für den Rahmen - Accent 2 Field BorderAccent2NormalRGBA:Int = PackRGBA(64, 64, 64, 1) Field BorderAccent2HoverRGBA:Int = PackRGBA(64, 64, 64, 1) Field BorderAccent2ClickedRGBA:Int = PackRGBA(128, 128, 128, 1) ' Farben für den Text Field TextNormalRGBA:Int = PackRGBA(0, 0, 0, 1) Field TextHoverRGBA:Int = PackRGBA(0, 0, 128, 1) Field TextClickedRGBA:Int = PackRGBA(128, 0, 0, 1) ' Farben für den Text-Schatten Field TextNormalShadowRGBA:Int = PackRGBA(64, 64, 64, 0.3) Field TextHoverShadowRGBA:Int = PackRGBA(64, 64, 64, 0.3) Field TextClickedShadowRGBA:Int = PackRGBA(64, 64, 64, 0.3) ' Funktion zum setzen der Hintergundfarbe Method SetBackgroundNormalColor(red:Byte, green:Byte, blue:Byte, alpha:Float) BackgroundNormalRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetBackgroundHoverColor(red:Byte, green:Byte, blue:Byte, alpha:Float) BackgroundHoverRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetBackgroundClickedColor(red:Byte, green:Byte, blue:Byte, alpha:Float) BackgroundClickedRGBA = PackRGBA(red, green, blue, alpha) End Method ' Border Accent1 Method SetBorderAccent1NormalColor(red:Byte, green:Byte, blue:Byte, alpha:Float) BorderAccent1NormalRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetBorderAccent1HoverColor(red:Byte, green:Byte, blue:Byte, alpha:Float) BorderAccent1HoverRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetBorderAccent1ClickedColor(red:Byte, green:Byte, blue:Byte, alpha:Float) BorderAccent1ClickedRGBA = PackRGBA(red, green, blue, alpha) End Method ' Border Accent2 Method SetBorderAccent2NormalColor(red:Byte, green:Byte, blue:Byte, alpha:Float) BorderAccent2NormalRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetBorderAccent2HoverColor(red:Byte, green:Byte, blue:Byte, alpha:Float) BorderAccent2HoverRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetBorderAccent2ClickedColor(red:Byte, green:Byte, blue:Byte, alpha:Float) BorderAccent2ClickedRGBA = PackRGBA(red, green, blue, alpha) End Method ' Text Method SetTextNormalColor(red:Byte, green:Byte, blue:Byte, alpha:Float) TextNormalRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetTextHoverColor(red:Byte, green:Byte, blue:Byte, alpha:Float) TextHoverRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetTextClickedColor(red:Byte, green:Byte, blue:Byte, alpha:Float) TextClickedRGBA = PackRGBA(red, green, blue, alpha) End Method ' Text-Schatten Method SetTextNormalShadowColor(red:Byte, green:Byte, blue:Byte, alpha:Float) TextNormalShadowRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetTextHoverShadowColor(red:Byte, green:Byte, blue:Byte, alpha:Float) TextHoverShadowRGBA = PackRGBA(red, green, blue, alpha) End Method Method SetTextClickedShadowColor(red:Byte, green:Byte, blue:Byte, alpha:Float) TextClickedShadowRGBA = PackRGBA(red, green, blue, alpha) End Method ' Imagemode einschalten und bilder laden Method SetImages(szImagePathNormal:String, fNormalAlpha:Float, szImagePathHover:String, fHoverAlpha:Float, szImagePathClicked:String, fClickedAlpha:Float) SetMaskColor(255,0,255) Self.ImgNormal = LoadImage(szImagePathNormal, MASKEDIMAGE) Self.ImgHover = LoadImage(szImagePathHover, MASKEDIMAGE) Self.ImgClicked = LoadImage(szImagePathClicked, MASKEDIMAGE) Self.ImgNormalAlpha = fNormalAlpha Self.ImgHoverAlpha = fHoverAlpha Self.ImgClickedAlpha = fClickedAlpha Self.width = ImageWidth(Self.ImgNormal) Self.height = ImageHeight(Self.ImgNormal) Self.DisplayMode = DISPLAYMODE_IMAGES End Method ' Funktion zum setzen der Größe Method SetMargins(width:Int , height:Int , BorderWidth:Int) Self.width = width Self.height = height Self.BorderWidth = BorderWidth End Method ' Funktion zum setzen der Position des Buttons Method SetPosition(x:Int , y:Int) Self.x = x Self.y = y End Method ' Funktion zum setzen der Beschriftung Method SetText(Text:String) Self.Text = Text End Method ' Funktion zum Laden einer eigenen Schriftart Method SetFont(FontPath:String, Size:Int, Style:Int) Self.Font = LoadImageFont(FontPath, Size, Style) Self.HasCustomFont = True End Method ' Funktion zum Setzen eines Text-Schattens Method SetTextShadow(OffsetNormalX:Int, OffsetNormalY:Int, OffsetHoverX:Int, OffsetHoverY:Int, OffsetClickedX:Int, OffsetClickedY:Int) Self.HasTextShadow = True Self.TextShadowOffsetNormalX = OffsetNormalX Self.TextShadowOffsetNormalY = OffsetNormalY Self.TextShadowOffsetHoverX = OffsetHoverX Self.TextShadowOffsetHoverY = OffsetHoverY Self.TextShadowOffsetClickedX = OffsetClickedX Self.TextShadowOffsetClickedY = OffsetClickedY End Method ' Button zeichnen Method Render() ' Je nach Displaymode rufe die entsprechende Funktion auf. Select Self.DisplayMode Case DISPLAYMODE_NORMAL Self.RenderNormal() Case DISPLAYMODE_IMAGES Self.RenderImages() End Select End Method Method RenderNormal() ' Da wir eine Accent-Farbe für den Rahmen benutzen, wird die Routine etwas komplizierter ' Wir benötigen die jeweiligen Punkte der Oberen Linken, die Punkte der unteren Rechten Ecke ' Sowie die Punkte der Oberen linken und unteren rechten Ecke, abzüglich der Rahmenstärke Local x1:Float = Float(Self.x) Local y1:Float = Float(Self.y) Local x1b:Float = Float(Self.x + Self.BorderWidth) Local y1b:Float = Float(Self.y + Self.BorderWidth) Local x2:Float = Float(Self.x + Self.width) Local y2:Float = Float(Self.y + Self.height) Local x2b:Float = Float(Self.x + Self.width - Self.BorderWidth) Local y2b:Float = Float(Self.y + Self.height - Self.BorderWidth) ' Aus den Punkten erstellen wir uns nun 4 Polygone. Linker Rahmen, Rechter Rahmen, Oberer Rahmen und unterer Rahmen Local UpperPoly:Float[] = [x1,y1,x2,y1,x2b,y1b,x1b,y1b] Local LeftPoly:Float[] = [x1,y1,x1b,y1b,x1b,y2b,x1,y2] Local LowerPoly:Float[] = [x1,y2,x2,y2,x2b,y2b,x1b,y2b] Local RightPoly:Float[] = [x2,y1,x2,y2,x2b,y2b,x2b,y1b] ' border accent1 - Oberen und Linken Rahmen zeichnen ' Je nach Buttonstatus, setzen der Zeichenfarbe und des AlphaWertes Select Self.Status Case 0 SetColor UnPackR(Self.BorderAccent1NormalRGBA), UnPackG(Self.BorderAccent1NormalRGBA), UnPackB(Self.BorderAccent1NormalRGBA) SetAlpha UnPackA(Self.BorderAccent1NormalRGBA) Case 1 SetColor UnPackR(Self.BorderAccent1HoverRGBA), UnPackG(Self.BorderAccent1HoverRGBA), UnPackB(Self.BorderAccent1HoverRGBA) SetAlpha UnPackA(Self.BorderAccent1HoverRGBA) Case 2 SetColor UnPackR(Self.BorderAccent1ClickedRGBA), UnPackG(Self.BorderAccent1ClickedRGBA), UnPackB(Self.BorderAccent1ClickedRGBA) SetAlpha UnPackA(Self.BorderAccent1ClickedRGBA) End Select ' Zeichne die Polygone DrawPoly UpperPoly DrawPoly LeftPoly ' border accent - Unteren und Rechten Rahmen zeichnen ' Je nach Buttonstatus, setzen der Zeichenfarbe und des AlphaWertes Select Self.Status Case 0 SetColor UnPackR(Self.BorderAccent2NormalRGBA), UnPackG(Self.BorderAccent2NormalRGBA), UnPackB(Self.BorderAccent2NormalRGBA) SetAlpha UnPackA(Self.BorderAccent2NormalRGBA) Case 1 SetColor UnPackR(Self.BorderAccent2HoverRGBA), UnPackG(Self.BorderAccent2HoverRGBA), UnPackB(Self.BorderAccent2HoverRGBA) SetAlpha UnPackA(Self.BorderAccent2HoverRGBA) Case 2 SetColor UnPackR(Self.BorderAccent2ClickedRGBA), UnPackG(Self.BorderAccent2ClickedRGBA), UnPackB(Self.BorderAccent2ClickedRGBA) SetAlpha UnPackA(Self.BorderAccent2ClickedRGBA) End Select ' Zeichne Polygone DrawPoly LowerPoly DrawPoly RightPoly ' Hintergrund zeichnen Select Self.Status Case 0 SetColor UnPackR(Self.BackgroundNormalRGBA), UnPackG(Self.BackgroundNormalRGBA), UnPackB(Self.BackgroundNormalRGBA) SetAlpha UnPackA(Self.BackgroundNormalRGBA) Case 1 SetColor UnPackR(Self.BackgroundHoverRGBA), UnPackG(Self.BackgroundHoverRGBA), UnPackB(Self.BackgroundHoverRGBA) SetAlpha UnPackA(Self.BackgroundHoverRGBA) Case 2 SetColor UnPackR(Self.BackgroundClickedRGBA), UnPackG(Self.BackgroundClickedRGBA), UnPackB(Self.BackgroundClickedRGBA) SetAlpha UnPackA(Self.BackgroundClickedRGBA) End Select DrawRect Self.x + Self.BorderWidth, Self.y + Self.BorderWidth , Self.width - Self.BorderWidth * 2, Self.height - Self.BorderWidth * 2 Self.RenderText() ' Reset - Setze die Zeichenmethoden zurück SetColor 255 , 255 , 255 SetAlpha 1 End Method ' Funktion zum Zeichnen des Buttons anhand von 3 Bildern Method RenderImages() ' Je nach Status, zeichne ein anderes Bild Select Self.Status Case 0 SetAlpha Self.ImgNormalAlpha DrawImage Self.ImgNormal, Self.x, Self.y Case 1 SetAlpha Self.ImgHoverAlpha DrawImage Self.ImgHover, Self.x, Self.y Case 2 SetAlpha Self.ImgClickedAlpha DrawImage Self.ImgClicked, Self.x, Self.y End Select Self.RenderText() ' Reset SetColor 255 , 255 , 255 SetAlpha 1 End Method ' Funktion zum Zeichnen des ButtonTextes Method RenderText() ' Falls eine eigene Schriftart verwendet werden soll, verwende sie If Self.HasCustomFont = True Then SetImageFont Self.Font End If ' Soll Text-Schatten gezeichnet werden? If Self.HasTextShadow = True Then Local tempOffsetX:Int = 0 Local tempOffsetY:Int = 0 Select Self.Status Case 0 SetColor UnPackR(Self.TextNormalShadowRGBA), UnPackG(Self.TextNormalShadowRGBA), UnPackB(Self.TextNormalShadowRGBA) SetAlpha UnPackA(Self.TextNormalShadowRGBA) tempOffsetX = Self.TextShadowOffsetNormalX tempOffsetY = Self.TextShadowOffsetNormalY Case 1 SetColor UnPackR(Self.TextHoverShadowRGBA), UnPackG(Self.TextHoverShadowRGBA), UnPackB(Self.TextHoverShadowRGBA) SetAlpha UnPackA(Self.TextHoverShadowRGBA) tempOffsetX = Self.TextShadowOffsetHoverX tempOffsetY = Self.TextShadowOffsetHoverY Case 2 SetColor UnPackR(Self.TextClickedShadowRGBA), UnPackG(Self.TextClickedShadowRGBA), UnPackB(Self.TextClickedShadowRGBA) SetAlpha UnPackA(Self.TextClickedShadowRGBA) tempOffsetX = Self.TextShadowOffsetClickedX tempOffsetY = Self.TextShadowOffsetClickedY End Select ' Versetze den Text um den jeweiligen SchattenOffset DrawText Self.text , (Self.x * 2 + Self.width - TextWidth(Self.Text)) / 2 + tempOffsetX , (Self.y * 2 + Self.height - TextHeight(Self.Text)) / 2 + tempOffsetY End If ' Zeichne Text Select Self.Status Case 0 SetColor UnPackR(Self.TextNormalRGBA), UnPackG(Self.TextNormalRGBA), UnPackB(Self.TextNormalRGBA) SetAlpha UnPackA(Self.TextNormalRGBA) Case 1 SetColor UnPackR(Self.TextHoverRGBA), UnPackG(Self.TextHoverRGBA), UnPackB(Self.TextHoverRGBA) SetAlpha UnPackA(Self.TextHoverRGBA) Case 2 SetColor UnPackR(Self.TextClickedRGBA), UnPackG(Self.TextClickedRGBA), UnPackB(Self.TextClickedRGBA) SetAlpha UnPackA(Self.TextClickedRGBA) End Select DrawText Self.text , (Self.x * 2 + Self.width - TextWidth(Self.Text)) / 2 , (Self.y * 2 + Self.height - TextHeight(Self.Text)) / 2 ' Reset SetColor 255 , 255 , 255 SetAlpha 1 SetImageFont Null End Method ' Button-Status updaten Method Update() ' Befindet sich die Mouse über unsrem Buttons? If MouseX() >= Self.x And MouseX() <= Self.x + Self.width And MouseY() >= Self.y And MouseY() <= Self.y + Self.height Then ' Ist Darüber hinaus die Maustaste gedrückt? If MouseDown(1) Then ' Mouse ist gedrückt, status auf .clicked setzen Self.Status = 2 ' Es Wurde geklickt. ' Wurde die Taste zuletzt geclickt und nun wieder losgelassen? ElseIf Not MouseDown(1) And Self.Status = 2 Then ' Button ist gedrückt und Maustaste losgelassen! Self.HasBeenClicked = True Self.Status = 0 ' Keine Maustaste gedrückt und keine der oberen Bedingungen erfüllt ElseIf Not MouseDown(1) Then Self.Status = 1 ' Status auf 1 = Hover setzen End If Else ' Button wurde nicht angerührt. Status = 0 (normal) Self.Status = 0 End If End Method ' Bequeme Methode um den Button zu zeichnen und abzufragen Method HandleButton() Self.Render() Self.Update() End Method ' Statusvariablen resetten, wenn Button geklicked wurde Method ResetButton() Self.HasBeenClicked = False Self.Status = 0 End Method End Type ' ==================================================================== ' D E M O - A P P L I K A T I O N ' ==================================================================== Graphics 800 , 600 SetBlend ALPHABLEND ' Erstelle ein paar Buttons ' Methode 1: Die Schnelle: ' -------------------------------------------- Local ButtonNewGame:TButton = New TButton ' Eine neue Instanz der Klasse anlegen ButtonNewGame.SetPosition(200, 150) ' Position auf X=200 und Y=150 setzen ButtonNewGame.SetMargins(200 , 50 , 2) ' Breite von 200 und Höhe von 50 setzen, sowie Rahmenstärke 2 Pixel ButtonNewGame.SetText("New Game") ' Eine Beschriftung wählen ' Methode 2: Ein BilderButton (ACHTUNG! Die Bilder müssen vorhanden sein!) ' -------------------------------------------- Local ButtonSaveGame:TButton = New TButton ButtonSaveGame.SetPosition(200, 220) ' Die nötigen Images setzen. Erst für Status "normal", gefolgt vom Alphawert für "normal", dann für "Hover" mit Alphawert und dann "Clicked" mit Alphawert ButtonSaveGame.SetImages("c:\temp\normal.bmp", 0.7, "c:\temp\hover.bmp", 0.85, "c:\temp\clicked.bmp", 1) ButtonSaveGame.SetText("Save Game") ' Methode 3: Fast alle Attribute verändern ' -------------------------------------------- Local ButtonQuit:TButton = New TButton ButtonQuit.SetPosition(200, 340) ButtonQuit.SetMargins(200 , 50 , 2) ButtonQuit.SetText("Quit") ' Eine eigene Schriftart verwenden. Erst den Pfad, dann die Schriftgröße, gefolgt von den nötigen Flags ButtonQuit.SetFont("C:\windows\fonts\ARIALBI.TTF", 26, SMOOTHFONT|BOLDFONT|ITALICFONT) ButtonQuit.SetTextShadow(2,2,3,3,0,0) ' einen Textschatten festlegen. Offsets in x,y paaren für Normal, Hover und Clicked ' Farben setzen ButtonQuit.SetBackgroundNormalColor(0,128,0,1) ButtonQuit.SetBorderAccent1NormalColor(128,255,128,1) ButtonQuit.SetBorderAccent2NormalColor(0,96,0,1) ButtonQuit.SetTextNormalColor(255,255,0,1) ButtonQuit.SetTextNormalShadowColor(0,255,255,1) ButtonQuit.SetBackgroundHoverColor(0,196,0,1) ButtonQuit.SetBorderAccent1HoverColor(255,255,255,1) ButtonQuit.SetBorderAccent2HoverColor(255,255,255,1) ButtonQuit.SetTextHoverColor(196,196,0,1) ButtonQuit.SetTextHoverShadowColor(0,255,255,1) ButtonQuit.SetBackgroundClickedColor(0,255,0,1) ButtonQuit.SetBorderAccent1ClickedColor(255,0,0,1) ButtonQuit.SetBorderAccent2ClickedColor(255,0,0,1) ButtonQuit.SetTextClickedColor(128,128,0,1) ButtonQuit.SetTextClickedShadowColor(0,255,255,1) ' Hauptschleife While Not KeyHit(KEY_ESCAPE) Cls ' Arbeite die Buttons ab. Übrigens: Falls nötig kann man HandleButton() (welches Zeichnet und Updatet) gegen Render() und Update() austauschen, so dass man zwischen drin noch eingreifne kann (falls nötig) ButtonNewGame.HandleButton() ButtonSaveGame.HandleButton() ButtonQuit.HandleButton() ' Prüfe ob Buttons geklickt wurden If ButtonNewGame.HasBeenClicked = True Then ButtonNewGame.ResetButton() ' Setze die Stati (wie Normal, Hover oder Clicked wieder zurück, sowie "HasBeenClicked" auf 0. Nurn ötig wenn danach der button erneut gezeichnet werden soll DrawText "NewGame!" , 50 , 50 Flip Delay 2000 End If If ButtonSaveGame.HasBeenClicked = True Then ButtonSaveGame.ResetButton() DrawText "Saving...!" , 50 , 50 Flip Delay 2000 End If If ButtonQuit.HasBeenClicked = True Then ButtonQuit.ResetButton() End End If Flip Wend ' ==================================================================== ' H I L F S - F U N K T I O N E N ' ==================================================================== ' Verpacke RGB in einen Integer Function PackRGB:Int (red:Byte, green:Byte, blue:Byte) Return red Shl 16 | green Shl 8 | blue Shl 0 End Function ' Verpacke RGBA in einen Integer Function PackRGBA:Int (red:Byte, green:Byte, blue:Byte, alpha:Float) ' Alphawert (0-1) in Byte-Wert (0-255) verwandeln Local intAlpha:Byte = Int(alpha * 255) Return IntAlpha Shl 24 | red Shl 16 | green Shl 8 | blue Shl 0 End Function ' Entpacke Alphaanteil aus einem Integer Function UnPackA:Float (packed:Int) ' alphawert extrahieren Local intAlpha:Byte = (packed & $FF000000) Shr 24 ' und in Float umrechnen Local floatAlpha:Float = Float(intAlpha) / 255 Return floatAlpha End Function ' Entpacke Rotanteil aus einem Integer Function UnPackR:Byte (packed:Int) Return (packed & $FF0000) Shr 16 End Function ' Entpacke Grünanteil aus einem Integer Function UnPackG:Byte (packed:Int) Return (packed & $FF00) Shr 8 End Function ' Entpacke Blauanteil aus einem Integer Function UnPackB:Byte (packed:Int) Return (packed & $FF) Shr 0 End Function |
||
War doesn't determine who's right,
war determines who's left... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group