Tranparentes Canvas

Status
Nicht offen für weitere Antworten.

Paladin

Bekanntes Mitglied
Hi,

ich sitze zur Zeit an einem Problem an dem ich einfach nicht mehr weiterkomme. Auch die Internetrecherche hat mir
hier bis jetzt keine Lösung gebracht. Ich würde mich freuen, wenn jemand von euch mir den einen oder anderen Hinweis zu meinem Problem geben könnte.

Also:
Mit dem FormLayout vom swt kann ich ja zwei Canvas Elemente übereinander anordnen. In meinem Beispielprogramm gibt es ein großes Hintergrundbild und auf diesem sind mehrere Canvas Objekte angeordnet.

Mein Problem ist jetzt, dass die Hintergrundfarbe der Canvas Objekte sich nicht auf Transparent einstellen lässt.
Ich habe nur die Möglichkeit beim erstellen des Canvas SWT.NO_BACKGROUND einzustellen, was aber den Effekt
hat, dass der Hintergrund jetzt ein Ausschnitt aus meinem Desktop ist.
Es muss doch irgendwie eine Möglichkeit geben bei einem Canvas einen Transparenten Hintergrund einzustellen, so dass man das dahinterliegende Hintergrundbild sieht.

Hat jemand von euch sich schonmal mit diesem Problem rumgeschlagen und eine Lösung gefunden?

Gruß

Paladin
 

Paladin

Bekanntes Mitglied
das Problem lässt sich wie folgt lösen:

man nehme ein Composite und setze als Hintergrund das Bild welches "durch das Canvas" zu sehen sein soll. Nun wird der BackgroundMode des Composite auf SWT.INHERIT_FORCE eingestellt (.setBackgroundMode(SWT.INHERIT_FORCE)).
Das Canvas wird jetzt per FormLayout auf das Composite gesetzt und schon kann man "durch das Canvas" sehen.

Gruß

Paladin
 
M

maddin28

Gast
Hi

ich hab das selbe Problem, komm aber leider immer noch nicht weiter. Ich häng mal mein Cavas Objekt an, welches ich gern transparent hätte. Vielleicht kann mir ja jemand helfen. Vielen Dank

Code:
import java.awt.*;

public class BildButton extends Canvas
{
    Image image;
    int breite, hoehe;

    public BildButton(Image image, int breite, int hoehe)
    {
		this.image = image;
		this.breite = breite;
		this.hoehe = hoehe;
    }
    public void paint (Graphics g)
    {
		if (image != null)
		g.drawImage(image, 0,0,this);
    }
    
    public void neuzeichnen (Image image, int breite, int hoehe)
    {
		this.image = image;
		this.breite = breite;
		this.hoehe = hoehe;
		repaint();
    }
    
    //Noetig, damit Canvas sicher gezeichnet wird
	public Dimension getMinimumSize() {
		return new Dimension(breite,hoehe);
	}
	//Noetig, damit Canvas sicher gezeichnet wird
	public Dimension getPreferredSize() {
		return getMinimumSize();
	}

}
 

André Uhres

Top Contributor
Code:
   private final float OPACITY = 0.4f;
...
    public void paint(Graphics g) {
        if (image != null){
            Graphics2D graphics2D = (Graphics2D) g;
            graphics2D.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, OPACITY));
            graphics2D.drawImage(image,0,0,null);
        }
    }
 
M

maddin28

Gast
Zunächst mal danke für die schnelle Antwort... Leider ist das nicht ganz das, was ich gemeint/gesucht hab. Wenn ich den Code so einfüge, werden die einzelnen CanvasObjekte transparent. Ich hab mich falsch ausgedrückt, sorry...Also die Sache ist Folgende: Ich lade in diesen Canvas Objekten Bilder, die transparente gifs sind. Ich hab so z.B. einen runden Button, der ein rechteckiges Bild ist, welches in den Ecken transparent ist. Und genau so möchte ich es auch in meiner Anwendung dargestellt bekommen. Also die Transparenz vom Gif übernehmen. Geht das überhaupt?

thx
 

Wildcard

Top Contributor
Davon abgesehen das du ein AWT Problem in einen SWT Thread gepostet hast:
Wenn du Transparenz möchtest musst du Swing verwenden. AWT Komponenten (wie Canvas) sind immer opaque.
 
M

Maddin28

Gast
Oh tut mir leid, ich hab halt di SUFU benutzt und diesen Thread gefunden... Ähm kurz nochmal zu meinem Problem...Was würde sich denn am ehesten anbieten in swing? JCanvas gibt es ja nicht und ich möchte so wenig wie möglich umschreiben (ist ja klar).

Thx
 

Wildcard

Top Contributor
JComponent ist das Gegenstück zu Canvas.
Du musst allerdings deine ganze Applikation auf Swing umstellen. Mischen lassen sich die beiden nicht so gut.
 
M

Maddin28

Gast
Super danke. Das klappt soweit schon ganz gut, wegen der kompletten Umstellung auf swing hab ich mir ohnehin schon Gedanken gemacht!

Danke
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX Canvas neu zeichnen anstoßen AWT, Swing, JavaFX & SWT 34
H JavaFX Gedrehter Text auf Canvas (Positionierung) AWT, Swing, JavaFX & SWT 6
ExceptionOfExpectation Textdarstellung auf einem Canvas mit Hilfe von repaint(); AWT, Swing, JavaFX & SWT 6
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
W Canvas oder Polygone? AWT, Swing, JavaFX & SWT 3
Monokuma Canvas Form entfernen AWT, Swing, JavaFX & SWT 2
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
M Internal Frames und Canvas-Element AWT, Swing, JavaFX & SWT 9
TheJavaKid Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
M Halbkreiszeichnen(Canvas) - Diesen mit Mouseevents bestücken AWT, Swing, JavaFX & SWT 3
dereki2000 AWT Canvas zeichnet nicht AWT, Swing, JavaFX & SWT 7
D Canvas oder scene graph? AWT, Swing, JavaFX & SWT 16
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
Y Objekte grafisch darstellen ohne GMF - Composite auf Canvas? AWT, Swing, JavaFX & SWT 2
Prafy AWT Klickbare Bereiche auf Canvas AWT, Swing, JavaFX & SWT 2
J JavaFX JavaFX Canvas einfaches Zeichenprogramm AWT, Swing, JavaFX & SWT 7
P MalProgramm mit JScrollPane und Canvas AWT, Swing, JavaFX & SWT 2
Cromewell JavaFX Nur bestimmten Teil eines Canvas rendern und anzeigen AWT, Swing, JavaFX & SWT 2
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
L JavaFX Canvas max size? AWT, Swing, JavaFX & SWT 1
J JavaFX Rendering von Canvas sehr langsam AWT, Swing, JavaFX & SWT 2
P AWT Canvas freihändig zeichnen AWT, Swing, JavaFX & SWT 1
Regedit JavaFX Java Canvas hört ständig auf zu aktualisieren/malen AWT, Swing, JavaFX & SWT 3
H JavaFX Freezes beim Zeichnen mit Canvas AWT, Swing, JavaFX & SWT 3
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
B JavaFX KeyEvent und Canvas draw Problem AWT, Swing, JavaFX & SWT 9
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
C Java FX Canvas missing getGraphicContext2D AWT, Swing, JavaFX & SWT 5
windl Overlay mit Transparentem JWindow und Canvas AWT, Swing, JavaFX & SWT 2
S JavaFX Canvas - nur eine Figur auf der Zeichenfläche färben? AWT, Swing, JavaFX & SWT 1
R JComponent auf Canvas AWT, Swing, JavaFX & SWT 8
S Canvas durch transparentes JPanel sichtbar machen AWT, Swing, JavaFX & SWT 2
A JavaFX Menubar wird von Canvas überzeichnet AWT, Swing, JavaFX & SWT 8
antonbracke Multiplayer Shooter- Wie geht das mit Canvas & Graphics AWT, Swing, JavaFX & SWT 6
Luk10 KeyBindings mit Canvas? AWT, Swing, JavaFX & SWT 3
B LookAndFeel GWT: Canvas in TabSet nicht sichtbar AWT, Swing, JavaFX & SWT 2
K canvas zeig nach repaint nichts an AWT, Swing, JavaFX & SWT 8
T Canvas clipping AWT, Swing, JavaFX & SWT 4
S 2 Canvas übereinander AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Canvas Problem(Größe) AWT, Swing, JavaFX & SWT 6
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
F Canvas Objekt außerhalb des Frames zeichnen AWT, Swing, JavaFX & SWT 3
M Wofür Canvas? AWT, Swing, JavaFX & SWT 5
frankred Swing Canvas nach "Window-resize" neu Zeichnen lassen wegen Anzeigefehler AWT, Swing, JavaFX & SWT 4
S Canvas in ScrollPane wird beim scrollen immer neu gezeichnet AWT, Swing, JavaFX & SWT 3
F Nur ein Objekt auf Canvas neu zeichnen AWT, Swing, JavaFX & SWT 4
B AWT Canvas überdeckt nach repaint() JComboBox-Optionen AWT, Swing, JavaFX & SWT 2
lumo SWT Canvas transparent AWT, Swing, JavaFX & SWT 4
2 AWT Zeichnen in Canvas AWT, Swing, JavaFX & SWT 5
B 2D-Grafik Malen/übermalen mit Canvas AWT, Swing, JavaFX & SWT 5
L Dynamisch Objekte in Canvas zeichnen AWT, Swing, JavaFX & SWT 5
G Auf Canvas zeichnen nur über boolean-Abfragen? AWT, Swing, JavaFX & SWT 5
S Canvas-Inhalt in Laufzeit ändern AWT, Swing, JavaFX & SWT 6
R In JFrame oder in Canvas mit grafischen Elemente zeichnen AWT, Swing, JavaFX & SWT 2
I Canvas Repaint Probleme AWT, Swing, JavaFX & SWT 2
S Bild wird auf Canvas in Applet nicht gezeichnet AWT, Swing, JavaFX & SWT 4
G SWT Linie unter transparentes Canvas zeichnen AWT, Swing, JavaFX & SWT 4
F Swing Paint mit Canvas Element AWT, Swing, JavaFX & SWT 35
S SWT Canvas: Flackernde Bilder AWT, Swing, JavaFX & SWT 3
T AWT canvas AWT, Swing, JavaFX & SWT 3
P Canvas: String wird nicht gezeichnet AWT, Swing, JavaFX & SWT 5
T SWT Canvas Koordinaten per MouseMove auslesen AWT, Swing, JavaFX & SWT 1
H Zeichnen auf smartgwt Canvas AWT, Swing, JavaFX & SWT 4
G Drag and Drop JTree to Canvas AWT, Swing, JavaFX & SWT 7
K Swing Sinuskurve zeichnen auf Canvas AWT, Swing, JavaFX & SWT 2
M AWT Component/Canvas erzeugt unerwünschten Rahmen bei paint AWT, Swing, JavaFX & SWT 3
J Canvas / paint() AWT, Swing, JavaFX & SWT 2
D Canvas soll angezeigtes jpg-Bild aktualisieren AWT, Swing, JavaFX & SWT 4
N zeichnen auf awt canvas AWT, Swing, JavaFX & SWT 9
G Ein Wort in einem String färben in einer Canvas AWT, Swing, JavaFX & SWT 10
J Canvas Inhalt als Bild speichern! AWT, Swing, JavaFX & SWT 16
T zeichnen mit canvas AWT, Swing, JavaFX & SWT 3
S repaint im Canvas AWT, Swing, JavaFX & SWT 3
D Canvas und Buttons AWT, Swing, JavaFX & SWT 20
P Zeichnen in Canvas und Neuzeichnen AWT, Swing, JavaFX & SWT 3
G Canvas + Swing-Objekte AWT, Swing, JavaFX & SWT 5
C canvas.draw zeichne ohne ausfüllen AWT, Swing, JavaFX & SWT 9
P Canvas in JFrame mit GridLayout AWT, Swing, JavaFX & SWT 4
B Graphics und Canvas - Problem AWT, Swing, JavaFX & SWT 2
T Canvas gegen Container austauschen --> GUI fehlt AWT, Swing, JavaFX & SWT 4
P Canvas Inhalt löschen AWT, Swing, JavaFX & SWT 4
D Canvas über JMenuBar AWT, Swing, JavaFX & SWT 7
F ToolTip auf Canvas AWT, Swing, JavaFX & SWT 2
L Probleme mit mehreren Canvas: Überlagerungseffekte? AWT, Swing, JavaFX & SWT 5
N Zu hoher Speicherverbrauch beim Zeichnen (Canvas) AWT, Swing, JavaFX & SWT 5
G Canvas im JPanel - "Freie" Fläche Problem AWT, Swing, JavaFX & SWT 10
T Textfeldwert in canvas AWT, Swing, JavaFX & SWT 4
D cannot access Canvas AWT, Swing, JavaFX & SWT 13
G Canvas in SWT aktualisieren AWT, Swing, JavaFX & SWT 21
S AUF Canvas Zeichnen Fehler! AWT, Swing, JavaFX & SWT 10
G Canvas löschen AWT, Swing, JavaFX & SWT 15
H Sowas wie ein Canvas AWT, Swing, JavaFX & SWT 3
D Inhalt einer Canvas löschen (SWT.NO_BACKGROUND gesetzt) AWT, Swing, JavaFX & SWT 3
G GridBagLayout mit Canvas-Positionsproblem AWT, Swing, JavaFX & SWT 5
J Canvas und JTextField AWT, Swing, JavaFX & SWT 2
T erkennen ob innerhalb oder außerhalb von canvas gezeichnet AWT, Swing, JavaFX & SWT 2
S Problemen mit Canvas-Objekten im GridLayout AWT, Swing, JavaFX & SWT 8
P Inhalt eines Canvas verkleinern AWT, Swing, JavaFX & SWT 3
G Canvas, JMenu, und BufferStrategy AWT, Swing, JavaFX & SWT 2
M Codeteilung -> Canvas zeichnet nicht mehr AWT, Swing, JavaFX & SWT 40

Ähnliche Java Themen

Neue Themen


Oben