Bilder-Überlagerung umgehen!
-
Hallo
Ich weiß nicht ob ich doof bin. Aber ich habe ein Problem bei dem ich einfach keine Lösung finde. Dabei denke ich es ist doch etwas völlig Normales.
Also folgendes Problem:
Ich will eine Applikation entwickeln die einfach bewegte Bilder anzeigt die auf dem datenträger gespeichert sind (das ist noch nicht das Problem). Diese Bilder lassen sich aber immer nur als ein Rechteck in meinem Panel anzeigen und überlagern alles was sich darunter befindet. Das Problem ist: Ich will aber von der Bilddatei nur einen gewissen Teil zeichnen und den Rand einfach weglassen und nicht damit die darunterliegende Figur überlagern. Zum Beispiel soll das alles was im Bild BLAU ist, nicht gezeichnet werden(so zu sagen ein Bluescreen-Effekt).
Das klingt vielleicht unverständlich deshalb nochmal einfacher: ein Bild ist ein Planet der rand ist Schwarz. Ein Zweites Bild ist ein Raumschiff der rand ist schwarz. Zeichne ich jetzt das Raumschiff mit zB: g.drawImage über dem Planeten überdeckt die gesamte viereckige schwarze Randfläche des Raumschiffbildes den Planeten. Das soll aber nicht passieren. Es soll nur das Raumschiff ohne seinen Rand gezeichnet werden!Das findet doch überall Anwendung! Ich kann aber einfach nicht entdecken wie ich dieses Problem lösen kann. Ich wäre sehr dankbar falls mir hier jemand weiterhelfen könnte.
-
Hey HO !
Versuch doch einmal eine GIF Datei zu erstellen, in dem du die Hintergrundfarbe als Transparent angibst.
Dann Verwende diese. Vielleicht funzts.
Ansonsten hat Java sehr viele Grafikfunktionalitäten in Java2D. Dort kann man sogar eine beliebige Form erzeugen und das Bild dann nur in diese Form zeichenen, quasi als Textur. Oder es gibt aus noch jai (Java advanced imaging). Damit ist es auch möglich z.B. tif (mit Alphakanal) zu laden.Schau dir doch mal folgendes Buch an:
Titel: Java 2D Graphics
Autor: Jonathan Knudsen
Verlag : O'RELLY