在WP7中进行逻辑删除后将图像恢复到相同位置

时间:2012-02-08 10:04:37

标签: c# silverlight windows-phone-7

我在WP7应用程序中使用MouseDragElementBehavior将图像拖到画布上。我可以在图像拖动后获得坐标(X,Y位置)。但我想在墓碑之后保留相同的图像位置。

    private void MouseDragElementBehavior_Dragging(object sender, MouseEventArgs e)
    {

        Point currentPos = e.GetPosition(image1);
        if (currentPos.X < 190)
        {
            double targetOffset = 700;

            DoubleAnimation animation = new DoubleAnimation();
            animation.EasingFunction = new CircleEase();
            animation.Duration = new Duration(new TimeSpan(0, 0, 10));
            animation.From = TextScroll.AnimatableOffset;
            animation.To = targetOffset;

            Storyboard.SetTarget(animation, TextScroll);
            Storyboard.SetTargetProperty(animation, new PropertyPath("(AnimatableScrollViewer.AnimatableOffset)"));
            Storyboard storyboard = new Storyboard();
            storyboard.Children.Add(animation);

            storyboard.Begin();
        }

        App app = (App)Application.Current;
        app.current_X = currentPos.X.ToString();
        app.current_Y = currentPos.Y.ToString();

        TextScroll.AnimatableOffset = -700;
    }

我已经从隔离存储中存储并重新获取了用于墓碑的值。

    private void LoadSettings()
    {
        var settings = IsolatedStorageSettings.ApplicationSettings;
        current_X = settings["Xpos"].ToString();
        current_Y = settings["Ypos"].ToString();
    }

    private void SaveSettings()
    {
        var settings = IsolatedStorageSettings.ApplicationSettings;
        settings.Add("Xpos", current_X);
        settings.Add("Ypos",current_Y);
        settings.Save();
    }

现在我想使用这些值将图像定位在与逻辑删除之前相同的坐标上。我不知道如何使用提供的X和Y坐标来定位图像。

这是我使用图像的XAML代码。

       <Canvas Margin="12,0,3,-834" Grid.Row="1">
        <Image Height="800" Source="37.jpg" Stretch="Fill" Width="480" Canvas.Left="-11" x:Name="image1">
            <i:Interaction.Behaviors>
                <el:MouseDragElementBehavior ConstrainToParentBounds="True" Dragging="MouseDragElementBehavior_Dragging" />
            </i:Interaction.Behaviors>
        </Image>
    </Canvas>

1 个答案:

答案 0 :(得分:0)

首先,Point currentPos = e.GetPosition(image1);获取鼠标相对于图像的位置。也许你想获得相对于画布的位置?

或者,您可以使用它来获取画布中的位置:

canvas1.GetLeft(image1);
canvas1.GetTop(image1);

然后,您可以在画布中设置某些内容的位置,如下所示:

canvas1.SetLeft(image1, x); 
canvas1.SetTop(image1, y);

要做到这一点,你需要命名你的画布:

<Canvas x:Name="canvas1" Margin="12,0,3,-834" Grid.Row="1">