Windows Store apps开发[30]移动控件位置

本文详细介绍了如何在Windows Store应用中移动图片控件。通过新建一个Blank App,然后在MainPage.xaml和MainPage.xaml.cs文件中添加特定代码,实现了图片位置的动态改变。文中提供了一个简单的步骤指南,并展示了运行效果。

注:本文由BeyondVincent(破船)原创首发

        转载请注明出处:BeyondVincent(破船)@DevDiv.com

更多内容请查看下面的帖子


[DevDiv原创]Windows 8 开发Step by Step


今天看到坛子里有人问如何移动图片

http://www.devdiv.com/thread-135266-1-1.html 
    刚好小弟我略懂,就为大家写一个小示例:如何在画面中用手势移动一个控件的位置, 就不多说原理,直接上代码和效果图,其实原理也很简单哦。要是不懂的话,跟帖,我会随时来解答滴。

这里有官方参考资料

1、新建一个Blank App

2、在MainPage.xaml文件中添加如下代码

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Image Source="/Assets/1.jpg"
            ManipulationStarted="Image_ManipulationStarted_1"
            ManipulationDelta="Image_ManipulationDelta_1"
            ManipulationCompleted="Image_ManipulationCompleted_1" 
            ManipulationMode="All" 
            Margin="342,34,591,337">
        <Image.RenderTransform>
            <TranslateTransform x:Name="translateTransform"/>
        </Image.RenderTransform>
    </Image>
    <Image Source="/Assets/BeyondVincentWin8Logo.png" Height="100" Margin="568,658,0,10"
                    ManipulationStarted="Image_ManipulationStarted_1"
                    ManipulationDelta="Image_ManipulationDelta_1"
                    ManipulationCompleted="Image_ManipulationCompleted_1" 
                    ManipulationMode="All" >
                <Image.RenderTransform>
                    <TranslateTransform x:Name="translateTransform1"/>
                </Image.RenderTransform>
    </Image>
</Grid>

代码中要注意下面三个东西是添加事件处理
ManipulationStarted
ManipulationDelta
ManipulationCompleted

记得再加上ManipulationMode="All"

3、MainPage.xaml.cs文件中,添加如下代码

private void Image_ManipulationStarted_1(object sender, ManipulationStartedRoutedEventArgs e)
{
    e.Handled = true;
}

private void Image_ManipulationDelta_1(object sender, ManipulationDeltaRoutedEventArgs e)
{
    Image image = sender as Image;
                
    if (image.RenderTransform.Equals(translateTransform))
    {
        this.translateTransform.X += e.Delta.Translation.X;
        this.translateTransform.Y += e.Delta.Translation.Y;
    }
    else
    {
        this.translateTransform1.X += e.Delta.Translation.X;
        this.translateTransform1.Y += e.Delta.Translation.Y;
    }
}

private void Image_ManipulationCompleted_1(object sender, ManipulationCompletedRoutedEventArgs e)
{
    e.Handled = true;
}

4、运行效果如下:

用鼠标可以拖动图片


5、代码下载地址

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值