C#拖放,为什么图像会上下翻转

本文关键字:上下 翻转 图像 为什么 拖放 | 更新日期: 2023-09-27 18:26:14

我正在用C#和XAML开发Metro应用程序,页面具有拖放功能。

由于某种原因,当图像被放置在某个区域时,它被放置在图像中时会倒置。

这是XAML代码

<ScrollViewer Height="247"
        Grid.Row="1"
        HorizontalScrollMode ="Enabled"
        HorizontalScrollBarVisibility ="Visible"
        VerticalScrollMode ="Disabled"
        VerticalScrollBarVisibility ="Disabled" Margin="10,0,449,442" >
        <GridView x:Name="availableItems" 
            CanDragItems="True"
            CanReorderItems="True"
            DragItemsStarting="dragItem"
                  AllowDrop="True"
            Drop="dropItemSource"
            Width="auto"
            ItemsSource="{Binding source}" >
            <GridView.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding Image}" Width="163" Height="247" />
                </DataTemplate>
            </GridView.ItemTemplate>
        </GridView>
    </ScrollViewer>
    <Grid Grid.Row="1">
    <GridView x:Name="chosenItems"
              CanDragItems="True"
              CanReorderItems="True"
              AllowDrop="True"
              DragItemsStarting="dragItem"
              Drop="dropItemDestination"
              ItemsSource="{Binding destination}" Margin="135,405,144,93" RenderTransformOrigin="0.5,0.5" Grid.Row="1" Background="#FFD18F8F">
        <GridView.RenderTransform>
            <CompositeTransform ScaleY="-1"/>
        </GridView.RenderTransform>
        <GridView.ItemTemplate>
            <DataTemplate>
                <Image Source="{Binding Image}" Width="163" Height="247" HorizontalAlignment="Left" VerticalAlignment="Top"/>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

这是C#代码

protected override void OnNavigatedTo(NavigationEventArgs e)
    {

        source.Add(new Item("Assets/Achord.png"));
        source.Add(new Item("Assets/Bchord.png"));
        source.Add(new Item("Assets/Cchord.png"));
        source.Add(new Item("Assets/Dchord.png"));
        source.Add(new Item("Assets/Echord.png"));
        source.Add(new Item("Assets/Fchord.png"));
        source.Add(new Item("Assets/Gchord.png"));
        availableItems.ItemsSource = source;
        chosenItems.ItemsSource = destination;
    }
    private void dragItem(object sender, DragItemsStartingEventArgs e)
    {
        draggedItem =(Item) e.Items[0];
    }
    private void dropItemDestination(object sender, DragEventArgs e)
    {
        source.Remove(draggedItem);
        destination.Insert(0, draggedItem);
    }
    private void dropItemSource(object sender, DragEventArgs e)
    {
        destination.Remove(draggedItem);
        source.Add(draggedItem);
    }
}
public class Item
{
    public  Item(string image)
    {
        this.Image = image;
    }
    public string Image
    {
        get;
        set;
    }
}

这是一个有点奇怪的问题,我试着把断点放进去,看看代码是否在任何时候对图像做了什么,但我什么都看不到。

C#拖放,为什么图像会上下翻转

这似乎是因为您的缩放因子为负。

<GridView.RenderTransform>
   <CompositeTransform ScaleY="-1"/>
</GridView.RenderTransform>