.NET GUI

.NET Community rund um alle Graphical User Interface (GUI) Themen.
Willkommen bei .NET GUI. Anmeldung | Registrieren | Hilfe | Impressum | Forumsregeln
in Suchen

Control teilweise andersfarbig darstellen

Letzter Beitrag 10-24-2008 12:35 von paul30k. 5 Antworten.
Seite 1 von 1 (6 Treffer)
Beiträge sortieren: Zurück Weiter
  • 08-16-2008 10:10

    • paul30k
    • Top 10 Mitwirkender
    • Registriert am 08-15-2008
    • Beiträge 29
    • Punkte 460

    Control teilweise andersfarbig darstellen

    Hallo,

    ich habe folgendes Problem:
    Es gibt ein Canvas (RootCanvas) in dem ein 2. Canvas liegt (WorkCanvas). Im 2. Canvas gibt es Objekte, die mit der Maus verschoben werden können - auch über den Rand des 2. Canvas hinaus. Das funktioniert soweit auch. Jetzt möchte ich, daß der Teil des Objekts, der das 2. Canvas verlassen hat, andersfarbig (z.B. Halbtransparent) dargestellt wird. Ich habe das mal versucht in der angehängten Grafik zu verdeutlichen.
    Außerdem sollte es noch im 1. Canvas Controls geben, die über den evtl. herausgeschobenen Objekten liegen, also nicht von den diesen verdeckt werden.
    Vielleicht noch wichtig: die verschiebaren Objekte sind vom Typ ContentControl.

    Ich beschäftige mich jetzt seit einer Woche mit WPF aber irgendwie erschlägt mich die Fülle an Möglichkeiten ( Ich bekomme noch nicht mal so simple Dinge hin wie einem Canvas einen Schatten zu verleihen...)
    Ich würde mich über Denkanstösse sehr freuen.

    Gruß
    Paul
    • Beitragspunkte: 35
    • IP-Adresse ist Registriert
  • 08-18-2008 12:45 Antwort zu

    • Norbert Eder
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04-09-2008
    • Graz / Austria
    • Beiträge 502
    • Punkte 7.469
    • ForumsAdministrator

    AW: Control teilweise andersfarbig darstellen

    Bezüglich des Schattens kann ich dir sofort weiterhelfen:

    How To: Elemente mit Schatten versehen

    Zur anderen Geschichte:
    Muss ich mal testen, sprich, kann ich auf die Schnelle auch nicht sagen. Kann gut sein, dass du hier mit Pfaden etc. arbeiten musst.

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 08-18-2008 15:46 Antwort zu

    • paul30k
    • Top 10 Mitwirkender
    • Registriert am 08-15-2008
    • Beiträge 29
    • Punkte 460

    AW: Control teilweise andersfarbig darstellen

    Hallo Norbert,

    vielen Dank für Deine Antwort.
    Das mit dem Schatten habe ich Dank Deiner Hilfe schon einmal hinbekommen. Statt Button.Effect musste es bei mir Button.BitmapEffect heißen (VS 2008 Express). Hier gab es sicherlich mal in der WPF eine Änderung.

    Ich werde mal probieren ob ich das mit den Pfaden vielleicht selbst hinbekomme.

    Gruß
    Paul
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 08-18-2008 19:16 Antwort zu

    • Norbert Eder
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04-09-2008
    • Graz / Austria
    • Beiträge 502
    • Punkte 7.469
    • ForumsAdministrator

    AW: Control teilweise andersfarbig darstellen

    Ja, BitmapEffect ist seit dem SP 1 als deprecated markiert. Stattdessen gibt es nun Effect. Das How To wurde von mir um diese Information erweitert.
    • Beitragspunkte: 5
    • IP-Adresse ist Registriert
  • 10-23-2008 15:55 Antwort zu

    AW: Control teilweise andersfarbig darstellen

    Answer
    Hallo,
    das Problem köntest du mit einer Transparenzmaske lösen.
    Diese kanst du beispielsweise in Expression Design bzw. Photoshop erstellen.

    Die Maske könnte etwa so aussehen.
    Halbtransparente Fläche in der Größe deines "RootCanvas" und eine 100% Opache Fläche in der Größe deines "WorkingCanvas".
    Dieses  PNG kannst du in Expression Blend importieren und unter Tools in eine Image bzw. DrawingBrush Resource umwandeln. Diese BrushResource kannst du nun als OpacityMask
    auf deinen "RooteCanvas" anwenden. Das hat den gewünschten Effekt zur Folge das sämtliche Objekte die sich in dem "RootCanvas" befinden Halbtransparent dargestellt werden sobald sie deinen "WorkingCanvas" verlassen.

    Um zu gewährleisten, das Objekte in deinem bisherigen RootCanvas eingefügt werden können die nicht von den Transparenzen betroffen sind (.."die über den evt. herausgeschobenen Objekten liegen, also nicht von diesen verdeckt werden "...),
    würde ich diesen in eine weiteren Canvas unterbringen und zum eigenlichen RootCanvas machen. Zur Verdeutlichung einen mögliche Layer Hierarchie deines Projektes:


    >RootCanvas
      >Canvas (bisheriger RootCanvas mit der OpacityMask versehen wie beschrieben)
         >WorkingCanvas
            >Objekt1
            >Objekt2
            >....
       >Weitere Objekte innerhalb des RootCanvas

    Hoffe es hilft.
    Gruß Boris

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 10-24-2008 12:35 Antwort zu

    • paul30k
    • Top 10 Mitwirkender
    • Registriert am 08-15-2008
    • Beiträge 29
    • Punkte 460

    AW: Control teilweise andersfarbig darstellen

    Hallo Boris,

    das hört sich gut an. Danke. Hatte das Problem ersteinmal hinten gestellt, da ich soweit keine vernünftige Idee für eine Lösung habe. Ich werde das die nächsten Tage mal umsetzen.
    Eigentlich habe ich meine Ansprüche mittlerweile noch etwas höher gesetzt: Die verschiebbaren Objekte besitzen einen Rahmen zur Größenänderung und zum Drehen des Objekts. Am liebsten wäre mir, wenn bei einem über das WorkAreaCanvas herausgeschobenen Objekt, dieser Rahmen nicht verändert wird, sondern nur der der Objektinhalt im RootCanvas-Bereich. In dem Fall muß man wahrscheinlich wirklich mit Pfaden arbeiten, so wie Norbert das vorgeschlagen hat. Wenn ich das mit den Pfaden nicht hinbekomme, ist die Lösung mit dem tranparenten PNG auf jeden Fall eine gute Alternative. Allerdings muß ich die Bitmap zur Laufzeit erzeugen, da die Größe meines Arbeitsbereiches variabel ist.

    Gruß
    Paul
    • Beitragspunkte: 5
    • IP-Adresse ist Registriert
Seite 1 von 1 (6 Treffer)
Powered by Community Server (Commercial Edition)    Hosting powered by 69° media solutions