Fehlfarbe bzw 2 verschieden transparent werte im Bild
Übersicht

![]() |
BobBetreff: Fehlfarbe bzw 2 verschieden transparent werte im Bild |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen,
mir ist eben aufgefallen das ich in einem selbserstellten Image leider 2 verschieden Transparent Farben enthalten sind. ![]() zum einen gibt es einen Wert 0 255 0 0 und zum anderen 0 0 0 0 Beide "Farben" sind zwar durch den Alphawert 0 für uns nicht sichtbar aber auf integer Ebene, und somit bei einem vergleich, verschieden. Woher kommt der 2te Alphawaert? Wen ich auf einem einehtlichen Hintergrund ein Rechteck zeichne und diese dann grabe erwarte ich das exakt 2 Farben in dem Bild entahlten sind und nicht 3. Irgendwelche vorschläge? Code: [AUSKLAPPEN] 'Fehlfarbe Graphics 800,600,0 SetColor 255,0,0 DrawRect 1,1,2,2 local img :TImage = CreateImage(5,5) GrabImage img,0,0 Local PMX:TPixmap = LockImage(img) For local y:int = 0 to ImageHeight(img)-1 For local x:Int = 0 to ImageWidth(img)-1 local Col:Int = ReadPixel(pmx,x,y) 'Print col from_argb(col,a:byte,r:byte,g:byte,b:byte) Next Next UnlockImage img Function from_argb (argb:int, a:byte var, r:byte var, g:byte var, b:byte var) a = argb shr 24 r = argb shr 16 & $FF g = argb shr 8 & $FF b = argb & $FF Print a + " " +r +" "+g +" "+b End Function |
||
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: a = argb shr 24
Da fehlt ein & $FF. |
||
Variety is the spice of life. One day ignore people, next day annoy them. |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für den Hinweis.
Ändert aber nichts. |
||
![]() |
rema |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt noch weitere Einstellungen betreffend der Graphicsausgabe. SetAlpha, SetBlend, SetMaskColor. Dies findest du alles im brl.max2 Modul.
Probiere mal diesen hier: Code: [AUSKLAPPEN] 'Fehlfarbe
Graphics 800,600,0 SetColor 255,0,0 SetAlpha 0.5 SetMaskColor 0,0,0 SetBlend SOLIDBLEND|ALPHABLEND DrawRect 1,1,3,3 Local img :TImage = CreateImage(5,5) GrabImage img,0,0 Local PMX:TPixmap = LockImage(img) For Local y:Int = 0 To ImageHeight(img)-1 For Local x:Int = 0 To ImageWidth(img)-1 Local Col:Int = ReadPixel(pmx,x,y) 'Print col from_argb(col,x,y) Next Next UnlockImage img Function from_argb (argb:Int, x:Int, y:Int) a = argb Shr 24 r = argb Shr 16 & $FF g = argb Shr 8 & $FF b = argb & $FF Print "x: "+ x +" y: "+ y +" argb: "+ a +" "+ r +" "+ g +" "+ b End Function |
||
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo rema,
SetAlpha, SetBlend, SetMaskColor sind mir wohlbekannt. Leider ändern aber auch entsprechende Aufrufe bisher nichts daran das 3 Farben im Bild sind. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jetz nochma für die Dummen, was ist genau das Problem?
Es gibt genau 1 Alpha wert, das ist Alpha. Alles andere ist bestenfalls Masking, die kannst du aber nicht draufzeichnen, die ist entweder im Bild oder via manuelles setzen hinzugefügt worden. Wenn du von daher Alpha vergleichen willst, vergleich den Alpha, ansonsten musst du dir eine Routine überlegen die auch mit Masking (das ja net einen fixen Wert haben muss wie Blitz3D auf Texturen) korrekt funktioniert. Verstehe leider dein Problem beim besten willen nicht, denn wenn du da drauf zeichnest mit rot auf einen schwarzen (besser gesagt sogar undefiniert, da kann jeglicher Mist drin stehen wenn du net erst CLS aufrufst, ist also nicht sehr empfehlenswert) Bereich und das grabst, dann gibt das rot auf schwarzem Hintergrund, also das was du auch hast. Da hats keine 2 Alphawerte bei dir ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi Dreamora,
das Problem hat sich durch rema's Code doch schon errledigt. Danke nochmal rema. Ich hatte wohl Tomaten auf den Augen und wieder 3 Farbwerte gezählt. Tatsächlich ist remas Code korrekt und jetzt sind acuh nur noch 2 Werte im Bild. Ich wunderte mich bei meinem Uhrsprünglichen Code halt darüber das einmal 0 255 0 0 und zum anderen 0 0 0 0 als transparente Anteile im Bild enthalten waren. |
||
![]() |
Bob |
![]() Antworten mit Zitat ![]() |
---|---|---|
EDIT:
Klappt dennoch nicht. Wenn die Parameter Width und Height des Rect's auf 2 gesetzt werden sind wieder sowohl 0 255 0 0 als auch 0 0 0 0 enthalten. Vergesst es trotzdem und danke für die Mühe. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group