我需要摆脱组件的一部分(使其完全透明),实际上是它底部的一个小条。 这是一个固定的大小,像25-30px,但问题是这个组件将调整很多,所以我不能只是将图像作为不透明蒙版。 (不同尺寸看起来很糟糕) 即使组件是300x300或1000x200,我也需要以某种方式消失底部25px。
我搜索了不透明蒙版和画笔,但没有运气,找不到将其停靠在组件底部的方法。
顺便说一下,不确定它是否重要但我正在讨论的组件是WPFChromium浏览器控件。
有没有办法通过不透明蒙板或像viewbox等来实现这个目的?
提前致谢!
答案 0 :(得分:1)
您可以使用LinearGradientBrush作为Control的OpacityMask并将Offset绑定到Control的ActualHeight,然后从该值中减去25并将其除以ActualHeight以获得以%为单位的值。这应该会给你底部的透明部分25px
<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>
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();
}
}