Fehlfarbe bzw 2 verschieden transparent werte im Bild

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Bob

Betreff: Fehlfarbe bzw 2 verschieden transparent werte im Bild

BeitragSa, März 24, 2007 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

mir ist eben aufgefallen das ich in einem selbserstellten Image leider 2 verschieden Transparent Farben enthalten sind. Evil or Very Mad

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

BeitragSa, März 24, 2007 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
a = argb shr 24


Da fehlt ein & $FF.
Variety is the spice of life. One day ignore people, next day annoy them.

Bob

BeitragSo, März 25, 2007 10:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Hinweis.
Ändert aber nichts.

rema

BeitragSo, März 25, 2007 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, März 26, 2007 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo rema,

SetAlpha, SetBlend, SetMaskColor sind mir wohlbekannt.
Leider ändern aber auch entsprechende Aufrufe bisher nichts daran das 3 Farben im Bild sind.
 

Dreamora

BeitragMo, März 26, 2007 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, März 27, 2007 9:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, März 27, 2007 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group