我正在尝试在WPF中执行一个简单的应用程序,但由于转换期间的意外结果,我感到困惑。
我有一个OpacityMask设置为RadialGradientBrush的Image。 RadialGradientBrush有一个ScaleTransform,其中两个轴的系数为0.5,中心设置为图像的中心。
我希望看到图像的一部分具有中心对称性,但不是。结果在水平轴周围是对称的,但是图像掩模看起来有点向左移动。
我很高兴用奇数/偶数图像大小解释自己这种现象,但这似乎并非如此,因为图像是矩形的。
我应该使用什么样的变换来获得具有中心对称性的图像蒙版?
这是我的XAML:
<Window x:Class="WtfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="940" Width="920">
<Grid x:Name="RootGrid" Width="900" Height="900" Background="Red">
<Image
Grid.Column="0"
Grid.Row="0"
x:Name="TopImage"
Width="900"
Height="900"
Source="Images/grid.png" SnapsToDevicePixels="True">
<Image.OpacityMask>
<RadialGradientBrush Opacity="1">
<RadialGradientBrush.Transform>
<TransformGroup>
<ScaleTransform
ScaleX="0.5"
ScaleY="0.5"
CenterX="450"
CenterY="450" />
</TransformGroup>
</RadialGradientBrush.Transform>
<GradientStop Color="#ffffffff" Offset="1" />
<GradientStop Color="#00ffffff" Offset="1" />
</RadialGradientBrush>
</Image.OpacityMask>
</Image>
</Grid>
</Window>
结果如下:
以下是示例项目的链接:project here
感谢。