Transparenz wird magenta

Lyras

Mitglied
Hallo, ihr da draußen.

Früher ( bzw. partiell noch heutzutage ) ist/war es ja gang und gäbe, dass man auf Tilesets oder einzelnen Texturen alle Pixel, die am Ende transparent sein sollten mit magenta ( Farbcode: 0xff00ff ) eingefärbt
show.php
und diese am Ende rausgefiltert hat. Ich erstelle also gerade ein 2D-Spiel, das schon etwas größer sein sollte, weshalb die Einfärb-Methode vlt. nicht das beste/gängigste ist. Ich habe mich für meinen Code etwas an "Prelude of the Chambered (Ludum Dare 21)", unter anderem, was das Rendering-System anbelangt. Er hat also bei seinem Code ( welcher wohlgemerkt schon etwas älter ist ) auch diese oben beschriebene Einfärb-Methode genutzt. Da ich dies aber nicht haben will, versuche ich anstatt alle Pixel erst anzumalen, diese direkt transparent zu lassen.

Ich habe also eine "Test-PNG", welche einen Schriftzug und einen transparent Hintergrund enthält.


Wie man sehen kann, wird der Hintergrund geladen ( das Hellblaue ) und auch die Textur. Obwohl
die Textur transparent ist und BufferedImage.getRGB( x , y ) TYPE_INT_ARGB als Standard-Color-Model besitzt, werden die eigentlich transparenten Pixel magenta dargestellt.

Nebensache: Sobald ich in der Main den Typ des BufferedImages, das auf den Canvas geladen wird von TYPE_INT_RGB auf TYPE_INT_ARGB umstelle kommt das hier raus:


Jetzt wird zwar die Transparenz meines Bildes übernommen, aber der Hintergrund ist nun grau.

Wie kann ich das ganze nun lösen?
Danke schonmal im Voraus!

MFG ~Lyras
 

Major_Sauce

Bekanntes Mitglied
Ich kann dir gerade leider nicht direkt weiterhelfen, da ich mir das erstmal genauer anschauen müsste, dazu bin ich gerade aber ein wenig zu viel im Stress.
Eine Frage habe ich dennoch, benötigst du denn überhaupt die Transparenz ?
Wenn du nur mit AWT oder Swing arbeitest, dann solltest du dir das ganze mit der Transparenz nochmal durch den Kopf gehen lassen da die Performance dadurch (ne nach Anwendung) ziemlich beeinträchtigt werden kann.
Ich muss sagen die Pink-zu-Transparent Methode ist blei "kleineren" games immer noch üblich, zumindest keine Engine dahinter steckt oder du anfängst mir OpenGL-Bindings rumzuspielen.

mfg Major
 

Lyras

Mitglied
Die Transparenz ist nicht unbedingt wichtig, aber sie ist angenehmer als das Einfärben. Desweiteren kann man das Magenta noch zum Texturieren nutzen.

Aber die Sache, die mich am meisten verwundert ist, warum durch TYPE_INT_ARGB der Hintergrund grau dargestellt wird.
 

Lyras

Mitglied
EDIT (gelöst):
Okay...

Meine 2 Fehler:
1. Ich habe zwar TYPE_INT_ARGB eingestellt, aber habe die Pixel vom Hintergrund nur mit der Farbe '0x00FF00' [RRGGBB] eingefärbt. Stattdessen müsste es heißen '0xFF00FF00' [AARRGGBB], damit der Hintergrund vollkommen undurchsichtig ist. Das grau rührte nämlich da her, dass die Farbe komplett durchsichtig war und daher anscheinend durch das Fenster o. Ä. (genauer Grund mir nicht bekannt) die graue Farbe "durchschien". Die Farbe war also transparent und der Hintergrund gräulich-schwarz

2. Ich habe zwar schon häufig probiert, die durch ImageIO.read() magenta eingefärbten, eigentlich transparenten Pixel durch die Pixelfarbe an der neuen Position zu ersetzen, jedoch an den falschen Codestellen.
Ich habe nun also einen Standard-Hintergrund, der nun, durch das Lösen des ersten Problems richtig gerendert wurde, gemalt und, sobald der Pixel der neu zu ladenden Bitmap transparent war, einfach die Farbe des Hintergrundpixels an der jeweiligen Pixelposition übergeben.

Ich hoffe, dass das jetzt verständlich war und anderen mit der Lösung dieser Probleme soweit geholfen ist, dass sie nicht in die selben Fallen tappen. Desweiteren sind natürlich Korrekturen gewünscht, falls diese notwendig sind, damit der erwünschte Lerneffekt nicht durch gefährliches Halbwissen oder gar Falschaussagen wegbleibt.

MFG ~Lyras
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
F OpenGL - Transparenz mit Depth Peeling Spiele- und Multimedia-Programmierung 0
aze Java3D:Farbige Flächen verschwinden lassen(Transparenz- oder Colorinterpolator?)) Spiele- und Multimedia-Programmierung 5
BattleMaster246 OpenGL - Transparenz Spiele- und Multimedia-Programmierung 10
I JOGL: Problem mit Blending bei Billboards (Transparenz) Spiele- und Multimedia-Programmierung 2
L Java 3 D - Transparenz einzelner Punkte Spiele- und Multimedia-Programmierung 6
Z Transparenz in BufferedImage Spiele- und Multimedia-Programmierung 8
G Punkt in Image auf Transparenz prüfen Spiele- und Multimedia-Programmierung 6
G Transparenz - Geschwindigkeit Spiele- und Multimedia-Programmierung 3
G png transparenz geschwindigkeitsproblem Spiele- und Multimedia-Programmierung 2
L Skalierung von Bildern mit Transparenz Spiele- und Multimedia-Programmierung 7
S Fehlerhafte Darstellung durch Transparenz? Spiele- und Multimedia-Programmierung 8
D 2 Texturen & transparenz Spiele- und Multimedia-Programmierung 16
S transparenz per paint()-methode will nicht Spiele- und Multimedia-Programmierung 12
TobiasN Wer Wird Millionär Spiele- und Multimedia-Programmierung 4
B Bild wird nicht geladen Spiele- und Multimedia-Programmierung 4
R JPanel wird erst im Fullscreen angezeigt Spiele- und Multimedia-Programmierung 1
K Das Leerzeichen der Tastatur wird nicht gleichgesetzt mit dem Leerzeichen aus der Text Datei Spiele- und Multimedia-Programmierung 5
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
S GetBufferStrategy-Methode wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
G Wer wird Millionär / Fragefenster Spiele- und Multimedia-Programmierung 6
Polarfuchs Status von Midi Datei(wird gerade abgespielt oder nicht) Spiele- und Multimedia-Programmierung 0
A Bild(sequenz) wird nicht geladen Spiele- und Multimedia-Programmierung 1
F 4 Gewinnt - Code wird ignoriert Spiele- und Multimedia-Programmierung 7
C Mein Programm wird sofort terminated Spiele- und Multimedia-Programmierung 8
A [LWJGL] BMP Textur wird nicht richtig dargestellt Spiele- und Multimedia-Programmierung 8
S LWJGL Rechteck wird nicht gezeichnet Spiele- und Multimedia-Programmierung 6
J Versch. Pfeiltasten angezeigt obwohl nur 1 gedrückt wird Spiele- und Multimedia-Programmierung 2
Creylon [LWJGL] Textur wird falsch angezeigt Spiele- und Multimedia-Programmierung 12
S Nur den Bereich des JPanels zeichen der im Viewport des JScrollPane angezeigt wird Spiele- und Multimedia-Programmierung 8
Q BufferedImage vs. Heap Space ‒ Warum wird der Speicher nicht freigegeben? Spiele- und Multimedia-Programmierung 6
M Karte wird falsch gezeichnet Spiele- und Multimedia-Programmierung 9
H Skalierung eines Polygons ohne das es verschoben wird Spiele- und Multimedia-Programmierung 3
C Alles hängt, wenn ein Sound abgespielt wird Spiele- und Multimedia-Programmierung 9
K Transformation wird nicht angewendet Spiele- und Multimedia-Programmierung 3
A Wie wird die Person im Game animiert, dass sie ihre Körperteile bewegen? Spiele- und Multimedia-Programmierung 3
A Shape Geometry, wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
L Progress Bar wird erst zu spät ganz angezeigt Spiele- und Multimedia-Programmierung 5
D Jogl:Textur auf GLUquadric wird vertikal spiegelverkehrt dargestellt Spiele- und Multimedia-Programmierung 2
M Java Textadventure HashMap wird nicht befüllt? Spiele- und Multimedia-Programmierung 7
P [JMF] Webcam wird nicht gefunden Spiele- und Multimedia-Programmierung 3
P Erkennen auf welche Objekte gezeigt wird in JoGL Spiele- und Multimedia-Programmierung 6
Steev KeyPressed:Tab wird nicht mehr weitergeleitet Spiele- und Multimedia-Programmierung 2
J JOGL - Bild wird immer wieder weiß Spiele- und Multimedia-Programmierung 2
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
J MenuBar wird bei Spiel nicht angezeigt Spiele- und Multimedia-Programmierung 5
L Frame wird geöffnet es wird aber nix angezeigt Spiele- und Multimedia-Programmierung 2
R Die korrekte Breite/Höhe eines Bildes wird nicht erkannt. Spiele- und Multimedia-Programmierung 2
P JOGL: mit glTranslated wird nichts gezeichnet Spiele- und Multimedia-Programmierung 3
F Szene wird nicht komplett angezeigt (Tiefenproblem?) Spiele- und Multimedia-Programmierung 2
G Fragespiel, Hilfe ! like Wer wird Millinär Spiele- und Multimedia-Programmierung 12
M 1. Menüleiste wird doppelt gezeichnet 2. awt auf ein jpanel Spiele- und Multimedia-Programmierung 4
F WakeupOnAWTEvent wird ignoriert! Spiele- und Multimedia-Programmierung 2
C BackgroundSound wird nicht abgespielt Spiele- und Multimedia-Programmierung 3
Devil0s Magenta zu transparent | Spritesheet Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen


Oben