2016-07-31 41 views
0

Ich habe ein Rechteck, das eine ImageBrush Opazitätsmaske hat (im Grunde ein farbiges Symbol).WPF - Größe Rechteck, das durch seine ImageBrush Opazitätsmaske

Dies ist meine aktuellen Code:

<Rectangle Fill="Black"> 
    <Rectangle.OpacityMask> 
    <ImageBrush ImageSource="/Path/To/Icon.png"/> 
    </Rectangle.OpacityMask> 
</Rectangle> 

Dadurch entsteht kein Ergebnis ohne eine feste Breite und Höhe des Rechtecks ​​zu setzen. Ist es möglich, das Rechteck entsprechend der ImageBrush-Bildgröße zu skalieren?

Danke für Ihre Hilfe. Tut mir leid, wenn das eine dumme Frage ist, ich lerne immer noch WPF.

bearbeiten: Um zu klären, was ich versuche, für das Rechteck, da dies zu verhalten gleiche zu erreichen ist:

<Image Source="/Path/To/Icon.png"/> 

Es soll nach den Dimensionen der Bildquelldatei bemessen sein.

Antwort

0

Stretch="None" halten die Bildgröße. Rechteck mit Bindung ActualWidth und ActualHeight der Größe von ImageBrush Größe. Das Ergebnis ist das gleiche, wenn wir nicht beide verwenden. In beiden Fällen wird das Rechteck auf die wahre ImageBrush-Größe angepasst. Ich hoffe, ich verstehe dein Problem.

<Rectangle Fill="Black" Width="{Binding ActualWidth, ElementName=image}" Height="{Binding ActualHeight, ElementName=image}"> 
    <Rectangle.OpacityMask> 
     <ImageBrush ImageSource="/Path/To/Icon.png" x:Name="image" Stretch="None"> 
     </ImageBrush> 
    </Rectangle.OpacityMask> 
</Rectangle> 
+0

Danke für die Antwort. Dies scheint jedoch mein Problem nicht zu lösen. Ich habe meine Frage zur Klärung bearbeitet. – Mastah

0
<Rectangle Width="{Binding ActualWidth, ElementName=image}" Height="{Binding ActualHeight, ElementName=image}"> 
    <Rectangle.Fill> 
     <ImageBrush ImageSource="C:\Users\neeraj\Pictures\Img1.jpg" x:Name="image" Stretch="None"> 
     </ImageBrush> 
    </Rectangle.Fill> 
</Rectangle> 

dieses Snippet Versuchen. Ich bin mir nicht sicher, warum du die Füllung schwarz haben wolltest. Wenn die Idee eine schwarze Umgebung hätte, verwende Hintergrund = "Schwarz" auf dem äußeren Gitter.