WPF中的转换不准确

时间:2014-10-09 11:17:59

标签: .net wpf

我正在尝试在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>

结果如下:

Image

以下是示例项目的链接:project here

感谢。

0 个答案:

没有答案