在WPF中将图像移动到另一个图像上

时间:2014-10-28 11:17:50

标签: c# wpf

我想在WPF中将图像移动到另一个图像上。

但是当我移动image1时,它显示在image2下方而不是image2上方。

Mainwindow.xaml

  <Image x:Name="imgPattern1" HorizontalAlignment="Left" Height="170" Margin="523,10,0,0" VerticalAlignment="Top" Width="248"
            PreviewMouseDown="imgPattern_PreviewMouseDown"
            PreviewMouseUp="imgPattern_PreviewMouseUp"
            PreviewMouseMove="imgPattern_PreviewMouseMove"
               >
            <Image.Style>
                <Style TargetType="Image">
                    <Style.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Opacity" Value="0.5" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Image.Style>
        </Image>

<Image x:Name="imgPattern2" HorizontalAlignment="Left" Height="170" Margin="523,10,0,0" VerticalAlignment="Top" Width="248"/>

enter image description here

我想移动pattern1移动到pattern2

提前致谢

2 个答案:

答案 0 :(得分:2)

使用名为Canvas.ZIndex的附加属性。确保您的第二张图片的价值高于第一张图片。或者只需在xaml布局中交换图像,这样第二张图像就成为第一张图像。

  <Image x:Name="imgPattern1" HorizontalAlignment="Left" Height="170" Margin="523,10,0,0" VerticalAlignment="Top" Width="248"
            PreviewMouseDown="imgPattern_PreviewMouseDown"
            PreviewMouseUp="imgPattern_PreviewMouseUp"
            PreviewMouseMove="imgPattern_PreviewMouseMove"
               >
            <Image.Style>
                <Style TargetType="Image">
                    <Style.Triggers>
                        <Trigger Property="IsEnabled" Value="False">
                            <Setter Property="Opacity" Value="0.5" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Image.Style>
        </Image>

<Image x:Name="imgPattern2" HorizontalAlignment="Left" Height="170" Margin="523,10,0,0" VerticalAlignment="Top" Width="248" Canvas.ZIndex=2/>

答案 1 :(得分:0)

如果没有明确指定ZIndex,子元素的绘制顺序取决于它们添加到公共容器的顺序。首先绘制第一个元素,最后一个元素是最后一个元素。

因此,您可以只更改图像控件的顺序,而不是设置ZIndex

<Image x:Name="imgPattern2" ... />
<Image x:Name="imgPattern1" ... />

现在imgPattern1上面显示了imgPattern2