BlitzMax 1.41: SetMaskColor bei 64Bit System -> GELÖST
Übersicht BlitzMax, BlitzMax NG Allgemein
XarBetreff: BlitzMax 1.41: SetMaskColor bei 64Bit System -> GELÖST |
So, Aug 15, 2010 12:53 Antworten mit Zitat |
|
---|---|---|
So, nachdem ich mich nun seit 3 Stunden ärgere und Foren durchforste, wage ich es, euch mit meinem Problem auf die Nerven zu gehen.
Ich habe kürzlich auf ein 64Bit Betriebssystem gewechselt (Win7). Vorher unter XP kein Problem, aber nun habe ich Schwierigkeiten beim SetMaskColor Befehl. Ich lade diverse PNG-Bilder, wobei ich immer Pink (RGB 255,0,255) als transparente Farbe benutze (SetMaskColor 255,0,255). Ich verwende dieselben Zeichnungsprogramme und dasselbe Farbformat wie bis anhin (Photoshop Elements 5.0, habs aber auch mit LiveMotion oder ganz simpel mit Paint probiert - immer dasselbe). Ich habe ein Testbild mit 2 Farben erstellt, neben Pink auch noch Weiss. Da funktioniert die transparente Farbe Pink bestens und wird erwartungsgemäss nicht angezeigt. Sobald ich nun aber ein etwas komplexeres Bild mit mehreren Farben zusätzlich hineinnehme, zeigt es mir das Pink auch an. Zuerst dachte ich, die pinke Farbe stimmt durch die Farbkomplexität nicht mehr. Um das zu testen lade ich mein Bild zusätzlich als PixMap und lese einen pinken Bildpunkt aus, wandle die Farbe in RGB um lasse mir die Werte im Programm anzeigen, ich erhalte schön korrekt die Werte 255,0,255. Die Farbe sollte also stimmen. Trotzdem wird sie nicht transparent. Und ich finde den Grund nicht. Hier mein Testprogramm: Code: [AUSKLAPPEN] Graphics 1280,960
SetClsColor 0,0,0 Cls SetMaskColor 255,0,255 ' --------------------------- TEST BILD MIT NUR 2 FARBEN ------------------------------------ ' Lade das Testbild als Image und PixMap: Local BildLeer:TImage = LoadImage( "Bilder\TestBildLeer.png",MASKEDIMAGE) Local PixMapLeer:TPixmap = LoadPixmap("Bilder\TestBildLeer.png" ) ' Lies einen der Pixel aus dem PixMap, welcher transparent sein müsste und wandle in RGB um: Farbe=ReadPixel( PixMapLeer,3,3 ) rLeer = Farbe Shr 16 & $FF gLeer = Farbe Shr 8 & $FF bLeer = Farbe & $FF ' Zeichne das Image und schreibe die RGB Farben des pinken Pixels darunter: DrawImage BildLeer, 100, 100 DrawText "R:"+rLeer+" / G:"+gLeer+" / B:"+bLeer,100,300 ' --------------------------- TEST BILD MIT MEHREREN FARBEN ------------------------------------ ' Lade das Testbild als Image und PixMap: Local BildVoll:TImage = LoadImage( "Bilder\TestBildVoll.png",MASKEDIMAGE) Local PixMapVoll:TPixmap = LoadPixmap("Bilder\TestBildVoll.png" ) ' Lies einen der Pixel aus dem PixMap, welcher transparent sein müsste und wandle in RGB um: Farbe=ReadPixel( PixMapVoll,3,3 ) rVoll = Farbe Shr 16 & $FF gVoll = Farbe Shr 8 & $FF bVoll = Farbe & $FF ' Zeichne das Image und schreibe die RGB Farben des pinken Pixels darunter: DrawImage BildVoll, 500, 100 DrawText "R:"+rVoll+" / G:"+gVoll+" / B:"+bVoll,500,300 Flip WaitKey End Hier das Test-Bild mit nur wenig Farben: Hier das Test-Bild mit mehr Farben: Und hier das Resultat: Irgendwelche Ideen? Vielen Dank Dani |
||
- Zuletzt bearbeitet von Xar am So, Aug 15, 2010 21:54, insgesamt einmal bearbeitet
XeresModerator |
So, Aug 15, 2010 13:14 Antworten mit Zitat |
|
---|---|---|
Dein zweites Testbild enthält einen Alpha-kanal. Entferne den. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Xar |
So, Aug 15, 2010 13:19 Antworten mit Zitat |
|
---|---|---|
Oje, und wie mach ich das? Was ist denn ein Alphakanal? Muss ich den Speichern des Bildes wegmachen? Oder beim Laden des Bildes im Programmcode?
Beim Speichern sehe ich nirgends eine Möglichkeit, zu wählen, ob mit/ohne Alpha Kanal. Gruss Dani |
||
mpmxyz |
So, Aug 15, 2010 13:23 Antworten mit Zitat |
|
---|---|---|
Ein Alphakanal bestimmt die Undurchsichtigkeit der Bildpixel.
Wenn ich eine PNG-Datei mit Paint.Net speichere, habe ich die Möglichkeit, es als 32 bit-Datei (mit alpha) oder als 24 bit-Datei (ohne alpha) zu speichern. In dem Programm, welches du nutzt, müsste es ähnliche Einstellungsmöglichkeiten geben. Du kannst aber auch etwas anderes machen: Nutze einfach den Alphakanal und mache die (255,0,255)-Stellen 100% durchsichtig. (Alpha=0, am Besten schwarze Farbe) mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
- Zuletzt bearbeitet von mpmxyz am So, Aug 15, 2010 13:25, insgesamt einmal bearbeitet
XeresModerator |
So, Aug 15, 2010 13:24 Antworten mit Zitat |
|
---|---|---|
Wenn das Bild bereits einen Alphakanal hat, erstellt Blitzmax vermutlich keinen mehr beim laden aus der Maskfarbe. Der Kanal gibt an, wie sichtbar ein Pixel ist.
In Gimp: Bild Laden, Ebene->Transparanz->Alphakanal entfernen, speichern. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Xar |
So, Aug 15, 2010 13:37 Antworten mit Zitat |
|
---|---|---|
Hm, ok, danke. Die entsprechende Funktion hab ich im Photoshop Elements zwar noch nicht gefunden, weder bei den Ebenen noch sonst wo, aber immerhin funktioniert es, wenn ich sämtliche Ebenen "auf die Hintergrundebene reduziere" und das Bild dann als PNG abspeichere. Ich muss nur drauf achten, dass ich das Original dann nicht so abspeichere, um die Ebenen nicht alle dauerhaft zu verlieren.
Danke euch Gruss Dani |
||
Übersicht BlitzMax, BlitzMax NG Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group