2010-12-11 9 views
1

Ich muss einen Teil einer Komponente (machen Sie es völlig transparent), ein kleiner Balken an der Unterseite davon tatsächlich loswerden. Es ist eine feste Größe so etwas wie 25-30px, aber das Problem ist, dass diese Komponente wird sehr viel Größe geändert, so dass ich nicht einfach ein Bild als Deckkraftmaske setzen kann. (die bei verschiedenen Größen schlecht aussehen wird) Auch wenn die Komponente 300x300 oder 1000x200 ist, muss ich unten 25px irgendwie verschwinden.WPF Opazitätsmaske an fixiertem Ort

Ich suchte nach Opazität Maske & Zeichnungsbürste, aber kein Glück, kann keine Möglichkeit finden, es an der Unterseite der Komponente anzudocken.

Übrigens, nicht sicher, ob es darauf ankommt, aber die Komponente, über die ich spreche, ist WPFChromium Browsersteuerung.

Gibt es eine Möglichkeit, dies durch Deckkraftmaske oder etwas wie Viewbox usw. zu erreichen?

Vielen Dank im Voraus!

Antwort

1

Sie können einen LinearGradientBrush als OpacityMask für die Steuerung verwenden und den Offset zur ActualHeight des Controls binden und dann 25 von dem Wert subtrahieren und ihn durch ActualHeight dividieren, um den Wert in% zu erhalten. Dies sollte Ihnen einen transparenten Teil 25px geben am unteren

<WebBrowser Name="webBrowser"> 
    <WebBrowser.OpacityMask> 
     <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
      <GradientStop Color="#FFFF0000" 
          Offset="{Binding ElementName=webBrowser, 
              Path=ActualHeight, 
              Converter={StaticResource OffsetConverter}, 
              ConverterParameter=25}"/> 
      <GradientStop Color="#00000000" 
          Offset="{Binding ElementName=webBrowser, 
              Path=ActualHeight, 
              Converter={StaticResource OffsetConverter}, 
              ConverterParameter=25}"/> 
     </LinearGradientBrush> 
    </WebBrowser.OpacityMask> 
</WebBrowser> 

Die OffsetConverter

public class OffsetConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     double height = (double)value; 
     double subract = System.Convert.ToDouble(parameter.ToString()); 
     double opacityMaskHeight = height - subract; 
     return opacityMaskHeight/height; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

ah wie ein Zauber funktioniert, vielen Dank! – Tiax