Hilfe

WritePixel

B2D B+ B3D

Aufruf

WritePixel x, y, rgb [, buffer]

Parameter

x X-Koordinate
y Y-Koordinate
rgb Farbcode mit Rot-, Grün- und Blauanteilen
buffer Grafikbuffer, in den der Punkt eingezeichnet werden soll


Rückgabewert

-


Beschreibung

Diese Anweisung zeichnet einen Punkt an der X/Y-Koordinate ein. Für die Ausgabe wird immer der aktuelle Buffer verwendet. Mit der Buffer-Option kann die Grafikausgabe auf einem anderen Buffer erfolgen (siehe BackBuffer, FrontBuffer und ImageBuffer).

Benutze ReadPixel oder ReadPixelFast, um die Farbe eines Pixels zu ermitteln.

Benutze den Befehl WritePixelFast für eine noch schnellere Grafikausgabe. Die Deaktivierung des Debuggers bringt eine enorme Geschwindigkeitssteigerung. WritePixel ist schneller als Plot.


Zusatzinformation

So wird ein Farbcode abgespeichert:
Es wird ein Integerwert übergeben. Ein Integerwert besteht aus 4 Byte. Das erste Byte (von rechts!) gibt den Blauanteil einer Farbe wieder, das zweite Byte den Grünanteil und das dritte Byte den Rotanteil. Die Farbanteile sind Werte im Bereich von 0-255. Das vierte Byte gibt den Alpha-Wert wieder. Alpha ist ein Transparenzwert, der erst ab Blitz3D voll verfügbar sein wird. Es sind Werte zwischen 0 (transparent) bis 255 (normal) möglich. Blitz2D kann keine Transparenz darstellen, somit hat es den Wert 255. Bis V1.53 gab es keinen Alphawert.

FF FF FF FF - Farbcode in einem Integerwert
=> vier Informationen (je 00-FF = 256 Werte pro Information)
1.: Beinhaltet Alpha-Information 255 (FFh), erst ab Blitz3D ist Alpha voll verfügbar
2.: Rotanteil 0-255 (0h-FFh)
3.: Grünanteil 0-255 (0h-FFh)
4.: Blauanteil 0-255 (0h-FFh)

Da die einzelnen Farbanteile praktisch nebeneinander abgelegt sind, kann man mittels Bit-Verschiebung und Masken den Farbcode mit relativ wenig aufwand berechnen:


Berechnung der Farbanteile aus einem Farbcode:
a = argb Shr 24
r = (argb Shr 16) And $FF
g = (argb Shr 8) And $FF
b = argb And $FF

Shr verschiebt die Bits im Integer soweit, dass diese an der ersten Byte-Position (von rechts!) liegen. Mittels And $FF werden die Bytes 2-4 maskiert (ihr Wert wird so ignoriert).


Berechnung des Farbcodes aus den Farbanteilen:
argb = a Shl 24 + r Shl 16 + g Shl 8 + b

Mittels Shl werden die einzelnen Byte-Werte an die richtige Position im Farbcode geschoben.


Berechnung der Farbwerte ohne Alpha:
rgb = argb AND $FFFFFF


Beispiel

Standardbeispiel:

Graphics 640, 480, 0, 1
While KeyHit(1) = 0
   rgb = Rnd(0, 255) Shl 16 + Rnd(0, 255) Shl 8 + Rnd(0, 255)
   WritePixel Rnd(0, 639), Rnd(0, 479), rgb
Wend
End


Siehe auch

BufferDirty, CopyPixel, CopyPixelFast, GetColor, Plot, ReadPixel, ReadPixelFast, WritePixelFast

Übersicht 2D Grafik Pixel