Ich möchte auf einen Canvas eine halbtransparente Fläche zeichnen, so dass eine dahinter auf dem gleichen Canvas gezeichnete Figur durchscheint.
Befindest du dich im .net-System (System.Windows.Controls.Canvas) oder mit welcher Klasse zeichnest du?
Zum ausfüllen von Flächen-Hintergründen wird dort in der Regel das Brush-Objekt benutzt. (System.Windows.Media.Brush)
Zum Beispiel kann man einen SolidColorBrush als Hintergrund des canvas selbst setzen.
canvas.Background = new SolidColorBrush(new Color(128, 0, 0, 0));
Schafft einen schwarzen, aber 50% durchsichtigen (Alpha-Wert 128) Hintergrund.
Bei anderen Zeichen-Formen ist es glaub ich ähnlich gelöst.
Ein bereits erzeugter „Brush“ kann nachträglich mit Hilfe der Property Opacity durchsichtig gemacht werden.
Ich möchte auf einen Canvas eine halbtransparente Fläche
zeichnen, so dass eine dahinter auf dem gleichen Canvas
gezeichnete Figur durchscheint.
Ich hätte mir damit beholfen, das, was ich auf die Fläche zeichnen will, mit einem Grafik-Programm als zB. PNG-Bild zu zeichnen und dabei dann die Transparenz einzusetzen. Auf die Fläche hätte ich dann dieses halb transparente Bild projiziert. Das ist aber natürlich keine auf dauer zufriedenstellende Lösung, erst recht, falls du vom Verhalten des Benutzers abhängige Objekte transparent zeichnen möchtest. Da ich selbst noch nie mit dem Problem konfrontiert wurde, könnte ich nur das gleiche machen,wie du: Googeln.
Tut mir leid ^^" also da kann ich dir leider nicht Weiterhelfen.
Gruß und ich hoffe du findest eine Antwort darauf.
Ich möchte auf einen Canvas eine halbtransparente Fläche
zeichnen, so dass eine dahinter auf dem gleichen Canvas
gezeichnete Figur durchscheint.
Leider habe ich kein Ahnung von C++, Aber in C#, setzt man einfach die Eigenschaft „Opacity“ auf den Wert den man haben möchte. Bei halbtransparent auf 50%.
Ich möchte auf einen Canvas eine halbtransparente Fläche
zeichnen, so dass eine dahinter auf dem gleichen Canvas
gezeichnete Figur durchscheint.
Entschuldige, dass ich dir da nicht weiterhelfen kann. Ich hatte bisher nur vollständige Transparenz auf eine Farbe eingesetzt. Selbst die VCL der Borland IDE hat nur vollständige Transparenz ermöglicht, wobei mein Wissen nicht wenige Jahre alt ist.
Du könntest schauen, ob du eine Library findest, die dir die Funktionalitäten ermöglicht. Oder du bindest 'ne .NET-Library ein.
gegrüßt!
Hallo Klaus,
meine Klasse ist Msgdipcustomcanvas::TGPCustomCanvas und deren Brush hat keine Eigenschaft Opacity. Leider kann ich am Canvas nicht drehen (der Aufrufparameter der Funktion, in der ich zeichne, ist fest).
Gruß WoLa
Da muss ich passen, die Klasse sagt mir leider nichts. Wohin zeichnest du überhaupt? In ein Fenster? In eine PDF?
Unter windows gingen grafik-operationen früher über
GDI bzw. später über GDI+. Bei anderen Betriebssystemen gibt es Quartz (Apple OS) und Cairo (Linux), die ich aber nicht genau kenne.
Du könntest schauen ob die von die benutzte Bibliothek auf eine dieser Schnittstellen zugreift und sie ggf. anpassen. Oder eine andere benutzen.
Hallo
Ich zeichne auf den Canvas eines dfm-Fensters (= Aufruf-Parameter der Funktion), auf dem in umterschiedlichen Ebenen (d.h. zu unterschedlichen Zeiten) andere Klassen zeichnen. Im konkreten Fall der Hintergrund eines Tanks anschließend Saug- und Druckleitungen, die animiert werden. Meine Aufgabe ist das Zeichnen des Füllstandes, wobei die Leitungen in der Flüssigkeit durchscheinen sollen. Wahrscheinlich werde ich in eine Bitmap zeichnen und die auf den Canvas zeichnen, wenn ich da was finde.
Gruß WoLa