Digitale Bild- & Grafikbearbeitung
Von: WоLа, 10.2.2012 09:13 Uhr
Ich möchte auf einen Canvas eine halbtransparente Fläche zeichnen, so dass eine dahinter auf dem gleichen Canvas gezeichnete Figur durchscheint.



  1. Re: C++ halbtransparente Fläche
    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.
    3 Kommentare
    • von WоLа 0
      Re^2: C++ halbtransparente Fläche
      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
  2. Antwort von Μаgnuѕ68 0
    Re: C++ halbtransparente Fläche
    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.
    • Antwort von Ѕνеn 0
      Re: C++ halbtransparente Fläche
      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.
      • Antwort von Τһоmаѕ Ѕtоll 0
        Re: C++ halbtransparente Fläche
        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.
        • Re: C++ halbtransparente Fläche
          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!