Hi,
@Stargate du bist jetzt mit der Inversroutine am schnellsten mit 473 ms, gratuliere...
@Thorium Wenn Du die folgende Routine umsetzen könntest:
Color gibt an ob man den R,G,B,A Wert (0-3 gewählt) manipulieren möchte
ColorVal ist der Bytewert der gesetzt werden soll-> Hier kann man z.B. den Alphawert direkt reinbschreiben und das Image wird mehr oder weniger sichtbar
CheckVal ist der gefundene Bytewert der nicht verändert werden soll
Hier sieht wie mit dieser Routine der Alphawert geändert wird und danach die drei Farben
http://em.q-soft.ch/files/get/PA1MslNELz/alphatest.exe
Code: Alles auswählen
Procedure MP_ImageSetColor (Image, Color, ColorVal, CheckVal) ; Verändert destruktiv eine ARGB Farbe um einen FestenWert, mit Ausnamecheck
StartDrawing(ImageOutput(Image))
*Pointer.Byte = DrawingBuffer()
max = *Pointer + ImageWidth(Image) * ImageHeight(Image) << 2
*Pointer + color
While *Pointer < max
If *Pointer\b <> CheckVal
*Pointer\b = ColorVal
EndIf
*Pointer + 4
Wend
StopDrawing()
EndProcedure
;- Nur eine Beispielanwendung wie die Farben manipuliert werden können
a + 1
If a > 255 ; Setzt die Farbwerte 1-255 (nur 0 nicht...)
a = 1
b+1
EndIf
If b > 3 ; Schaltet die RGBA Wert durch
b = 0
EndIf
MP_TextureSetColor (Texture, b, a, 0 )
; --