Image windows phone 7中网格中滑动图像的过渡效果

Image windows phone 7中网格中滑动图像的过渡效果,image,for-loop,transition,effect,Image,For Loop,Transition,Effect,我正在创建一个windows phone 7应用程序,其中我创建了图像的幻灯片,图像会随着时间间隔而变化,但我想让它们产生滑动效果。以下是我的代码: xaml代码: <Grid Background="Red" HorizontalAlignment="Left" Height="242" Margin="10,12,0,0" VerticalAlignment="Top" Width="458">

我正在创建一个windows phone 7应用程序,其中我创建了图像的幻灯片,图像会随着时间间隔而变化,但我想让它们产生滑动效果。以下是我的代码:

xaml代码:

<Grid Background="Red" HorizontalAlignment="Left" Height="242" 
                Margin="10,12,0,0"  
                VerticalAlignment="Top" Width="458">      
    <Image x:Name="myImg" Stretch="UniformToFill" Margin="0,0,0,28"/>
</Grid>

.cs代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Microsoft.Phone.Controls;
using System.Windows.Threading;
using System.Windows.Navigation;
namespace test
{
    public partial class MainPage : PhoneApplicationPage
    {
        private DispatcherTimer tmr = new DispatcherTimer();
        private List<string> images = new List<string>();
        private List<string> texts = new List<string>();
              private int imageIndex = 0;
        private int textIndex = 0;

        public MainPage()
        {

            InitializeComponent();


            Loaded += new RoutedEventHandler(MainPage_Loaded);
            //FirstStoryBoard.Begin();
        }


        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            tmr.Interval = TimeSpan.FromSeconds(2);
            tmr.Tick += new EventHandler(tmr_Tick);

            LoadImages();
             LoadText();


            ShowNextImage();
        }

        private void LoadImages()
        {
            images.Add("/img/11.jpg");
            images.Add("/img/ee.jpg");
            images.Add("/img/images.jpg");
            images.Add("/img/20130820080826_F2.jpg");
        }
        private void LoadText()
        {
            texts.Add("image 1");
            texts.Add("image2");
            texts.Add("image3");
            texts.Add("image3");
        }
        private void ShowNextImage()
        {
            var bi = new BitmapImage(new Uri(images[imageIndex], UriKind.Relative));

            myImg.Source = bi;

            imageIndex = (imageIndex + 1) % images.Count;
        }
        private void ShowNextText()
        {
            var bi = new BitmapImage(new Uri(images[imageIndex], UriKind.Relative));
            //var ti = new BitmapSource(new Uri(texts[textIndex], UriKind.Relative));
            var ti = texts[textIndex];
            mytext.Text = ti;
            //mytext.Source = ti;
             textIndex = (textIndex + 1) % texts.Count;
        }


        void tmr_Tick(object sender, EventArgs e)
        {
            ShowNextImage();
            ShowNextText();
        }

        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            if (!tmr.IsEnabled)
            {
                tmr.Start();
            }

            base.OnNavigatedTo(e);
        }

        protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
        {
            tmr.Stop();

            base.OnNavigatedFrom(e);
        }
使用系统;
使用System.Collections.Generic;
使用System.Linq;
Net系统;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Documents;
使用System.Windows.Input;
使用System.Windows.Media;
使用System.Windows.Media.Imaging;
使用Microsoft.Phone.Controls;
使用System.Windows.Threading;
使用System.Windows.Navigation;
名称空间测试
{
公共部分类主页:PhoneApplicationPage
{
私有调度程序tmr=新调度程序();
私有列表图像=新列表();
私有列表文本=新列表();
私有int imageIndex=0;
私有int textIndex=0;
公共主页()
{
初始化组件();
已加载+=新路由EventHandler(主页面_已加载);
//FirstStoryBoard.Begin();
}
已加载无效主页(对象发送器、路由目标)
{
tmr.Interval=时间跨度(从秒开始)(2);
tmr.Tick+=新事件处理程序(tmr_Tick);
LoadImages();
LoadText();
ShowNextImage();
}
私有void LoadImages()
{
添加(“/img/11.jpg”);
添加(“/img/ee.jpg”);
添加(“/img/images.jpg”);
添加(“/img/20130820080826_F2.jpg”);
}
私有void LoadText()
{
文本。添加(“图像1”);
文本。添加(“图像2”);
文本。添加(“图像3”);
文本。添加(“图像3”);
}
私有void ShowNextImage()
{
var bi=新的位图图像(新的Uri(图像[imageIndex],UriKind.Relative));
myImg.Source=bi;
imageIndex=(imageIndex+1)%images.Count;
}
私有void shownettext()
{
var bi=新的位图图像(新的Uri(图像[imageIndex],UriKind.Relative));
//var ti=新的位图源(新的Uri(text[textIndex],UriKind.Relative));
var ti=文本[文本索引];
Text=ti;
//mytext.Source=ti;
textIndex=(textIndex+1)%text.Count;
}
无效tmr_勾选(对象发送方,事件参数e)
{
ShowNextImage();
ShowNextText();
}
受保护的覆盖无效OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
如果(!tmr.IsEnabled)
{
tmr.Start();
}
基地。导航到(e);
}
受保护的覆盖无效OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
tmr.Stop();
基于(e)的导航;
}
这可能会对您有所帮助

由于图像是UIElement,因此可以按以下方式设置动画

**For Page Transistion** 
Here's what it all looks like in XAML:

<Page>

<toolkit:TransitionService.NavigationInTransition>

    <toolkit:NavigationInTransition>

        <toolkit:NavigationInTransition.Backward>

            <toolkit:TurnstileTransition Mode="BackwardIn"/>

        </toolkit:NavigationInTransition.Backward>

        <toolkit:NavigationInTransition.Forward>

            <toolkit:TurnstileTransition Mode="ForwardIn"/>

        </toolkit:NavigationInTransition.Forward>

    </toolkit:NavigationInTransition>

</toolkit:TransitionService.NavigationInTransition>

<toolkit:TransitionService.NavigationOutTransition>

    <toolkit:NavigationOutTransition>

        <toolkit:NavigationOutTransition.Backward>

            <toolkit:TurnstileTransition Mode="BackwardOut"/>

        </toolkit:NavigationOutTransition.Backward>

        <toolkit:NavigationOutTransition.Forward>

            <toolkit:TurnstileTransition Mode="ForwardOut"/>

        </toolkit:NavigationOutTransition.Forward>

    </toolkit:NavigationOutTransition>

</toolkit:TransitionService.NavigationOutTransition>

</Page>
图像转换

myImg =new BitMapImage();
SlideTransition slideTransition2 = new SlideTransition { Mode = SlideTransitionMode.SlideUpFadeIn };
ITransition trans=slideTransition2.GetTransition(myImg);
trans.Completed +=delegate (transition.Stop();};
trans.Begin();
在图像加载和淡出时执行此操作


注意*转换适用于所有UIElement

感谢您的回复
myImg =new BitMapImage();
SlideTransition slideTransition2 = new SlideTransition { Mode = SlideTransitionMode.SlideUpFadeIn };
ITransition trans=slideTransition2.GetTransition(myImg);
trans.Completed +=delegate (transition.Stop();};
trans.Begin();