0
我有一个图像与不透明蒙版,并希望增加可能性调整大小/重新定位不透明蒙版。 我是一个完整的WPF新手,所以可能是5月的思维是完全错误的,随时我:)扔任何想法绑定到元素位置不起作用?
所以我有这样的:
<Canvas Name="MainCanvas">
<Rectangle Width="197.016" Height="120.896" Canvas.Left="76.119" Canvas.Top="73.134" Name="SelectionRectangle"></Rectangle>
<Image Source="Chrysanthemum.jpg" Width="{Binding ActualWidth, ElementName=MainCanvas, Mode=OneWay}" Height="{Binding ActualHeight, ElementName=MainCanvas, Mode=OneWay}">
<Image.OpacityMask>
<RadialGradientBrush MappingMode="Absolute"
Center="{Binding ElementName=SelectionRectangle, Converter={StaticResource RectangleConverter}}"
GradientOrigin="{Binding ElementName=SelectionRectangle, Converter={StaticResource RectangleConverter}}"
RadiusY="{Binding ElementName=SelectionRectangle, Path=ActualHeight, Converter={StaticResource MathConverter}, [email protected]/2}"
RadiusX="{Binding ElementName=SelectionRectangle, Path=ActualWidth, Converter={StaticResource MathConverter}, [email protected]/2}">
<GradientStop Color="#7C15161F" Offset="1" />
<GradientStop Color="#FF40499E" Offset="0.999" />
<GradientStop Color="#FF182395" Offset="0" />
</RadialGradientBrush>
</Image.OpacityMask>
</Image>
</Canvas>
所以这是与放射渐变的掩模图像我试图用这个转换器放射渐变中心绑定到矩形中心:
public class RectangleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var rectangle = (Rectangle)value;
return new Point(Canvas.GetLeft(rectangle) + rectangle.ActualWidth/2f, Canvas.GetTop(rectangle) + rectangle.ActualHeight/2f);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return null;
}
}
一切编译和运行,但工程不正确,我猜是因为当矩形的位置变化,放射渐变中心绑定不知道关于这点(至少转换器中的断点不是通过改变矩形的位置来实现的)。 什么是最简单/推荐的方法来解决这个问题?