none
VisualBrush abdunkeln RRS feed

  • Allgemeine Diskussion

  • Hallo,
    Ich habe einen VisualBrush.
    Ist es möglich, diesen von oben, links und unten für ca. 3/10 in die Füllung hinein abzudunkeln?
    Geht so etwas überhaupt, also abdunkeln?
    Bin für jeden Vorschlag offen.

    Koopakiller - http://koopakiller.ko.ohost.de/

    Montag, 21. Mai 2012 21:02
    Moderator

Alle Antworten

  • Hallo Koopakiller,
    so wie ich verstanden habe möchten Sie einen Schatteneffekt erzeugen. In dem Beispiel aus der VisualBrush-MSDN-Dokumentation[1] wird eine RadialGradientBrush verwendet. Ich habe das Beispiel nachgestellt und ein bisschen ausprobiert wie man ein Schatten hinbekommt. Ich habe zwei Möglichkeiten dafür gefunden:
    1. Mit Hilfe eines LinearGradientBrush kann man horizontale Farbverlauf erzeugen, in dem man die anfangs-Koordinate (StartPoint) und die end-Koordinate (EndPoint) festlegt. Mehr dazu finden Sie unter [2].
    So sieht meine Lösung aus:

    <Grid>
            <Rectangle Width="75" Height="75">
                <Rectangle.Fill>
                    <VisualBrush TileMode="Tile">
                        <VisualBrush.Visual>
                           ...
                           <GeometryDrawing.Brush>
                           <LinearGradientBrush
                           StartPoint="0,0.5" EndPoint="1,0.5">
                           <GradientStop Color="White" Offset="1.0" />
                           <GradientStop Color="Pink"  Offset="0.0" /> 
                           </LinearGradientBrush>
                           </GeometryDrawing.Brush>                      
                            ...
                       </VisualBrush.Visual>
                    </VisualBrush>
                </Rectangle.Fill>
            </Rectangle>
    </Grid>

    Das Ergebnis sieht dann so aus:

    2. Mit Hilfe eines RadialGradientBrush erreich man einen radialen Schatteneffekt. Man muss dann die GradientOrigin-, Center-, RadiusX- und RadiusY-Eigenschaften anpassen. Mehr Informationen dazu finden Sie auch unter [2].
    Meine Beispielslösung:

    <Grid>
            <Rectangle Width="200" Height="75">
                <Rectangle.Fill>
                    <VisualBrush TileMode="Tile">
                        <VisualBrush.Visual>
                         ...
                          <GeometryDrawing.Brush>
                            <RadialGradientBrush GradientOrigin="1.0,0.5" Center="0.5,0.5" RadiusX="1.0" RadiusY="4.5">
                               <GradientStop Color="White" Offset="0.0"/>
                               <GradientStop Color="Blue" Offset="2.0"/>
                            </RadialGradientBrush>
                          </GeometryDrawing.Brush>
                         ...
                     </VisualBrush.Visual>
                    </VisualBrush>
                </Rectangle.Fill>
            </Rectangle>
    </Grid>
    
                                 
    
    
     Das Ergebnis schaut dann so aus:

    Die Intensitäten kann man auch beliebig anpassen.

    [1] http://msdn.microsoft.com/de-de/library/aa970904.aspx
    [2] http://msdn.microsoft.com/de-de/library/ms754083.aspx

    Ich hoffe Ihnen geholfen zu haben!

    Viele Grüße,
    Anna Koch
    MSDN Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline:http://www.msdn-online.de/Hotline
    MSDN Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die MSDN Hotline und dieses Posting dieseNutzungsbedingungen, Hinweise zuMarkenzeichen sowie die allgemein gültigenInformationen zur Datensicherheit sowie die gesondertenNutzungsbedingungen für die MSDN Hotline.

    Donnerstag, 24. Mai 2012 12:24
  • Hallo Koopakiller,

    Das mit dem Farbverlauf hatten wir doch schon einmal: Wie diesen Farbverlauf erstellen? … es ist immer gut wenn Du Dein Problem deutlich und völlig beschreiben kannst.

    Danke und Grüße,

    Robert


    Robert Breitenhofer, MICROSOFT  Twitter Facebook
    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Donnerstag, 24. Mai 2012 13:31
    Moderator
  • Damals ging das auch alles gut, da beide linearen Farbverläufe um 0° bzw. um 180° gedreht wurden. Jetzt habe ich das Problem wie hier:  
    Das soll die obere linke Ecke darstellen. Wenn man genau hinguckt gibt es da so seltsamme Überlappungen. Eigentlich sollte es doch nicht mitten im Farbverlauf heller werden, wo sich sogar noch 2 überlappen, oder?
    Ich habe in diesem Fall einfach 2 lineare Farbverläufe übereinander gelegt (der eine um 90° gedreht (1 & 2 bzw. 1 & 3)) Beide vom selben Grauwert richtung weiß verlaufen lassen (kannte zu 4). Ich plante es so, das das Hellblau (4) immer mehr durchkommt (richtung Mitte) und das es in der Ecke immer dunkler wird (1).So soll es auch noch in der Unteren linken ecke sein.

    Ich hoffe ich konnte mein Anliegen etwas deutlicher machen.


    Koopakiller - http://koopakiller.ko.ohost.de/

    Donnerstag, 24. Mai 2012 13:50
    Moderator