Хотите иметь слайд-шоу изображений по нажатию кнопки в Windows Phone 7 - PullRequest
0 голосов
/ 07 декабря 2010

У меня есть стек изображений в сетке, и я хочу создать для него слайд-шоу. Я использую Microsoft VS 2010 Express Edition для Windows phone для реализации этого. Кто-то может помочь? Код:

 using System;
 using System.Collections.Generic;

 using System.Windows.Threading;

  namespace swipe
 {
 public partial class MainPage : PhoneApplicationPage
{
 // private DispatcherTimer tmr = new DispatcherTimer();

private List<string> images = new List<string>();

private int imageIndex = 0;

public MainPage()
{
    InitializeComponent();

    Loaded += new RoutedEventHandler(MainPage_Loaded);
}

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

    LoadImages();

    ShowNextImage();
}

private void LoadImages()
{
    images.Add("/images/Hydrangeas.jpg");
    images.Add("/images/Jellyfish.jpg");
    images.Add("/images/Koala.jpg");
    images.Add("/images/Tulips.jpg");
}

private void ShowNextImage()
{
   // String bi = new BitmapImage(new Uri(images[imageIndex], UriKind.Relative));

    myImg.Source = new BitmapImage(new Uri(images[imageIndex], UriKind.Relative));

    imageIndex = (imageIndex + 1) % images.Count;
   }

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

 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);
}

private void Play_Click(object sender, RoutedEventArgs e)
{
    ShowNextImage();
}

 }
 }

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

Вот краткий пример одного из способов сделать это. Он не использует сетку изображений, но я уверен, что вы можете настроить это так, как вам нужно.

Редактировать: перечитать заголовок. Если вы хотите, чтобы это происходило по нажатию кнопки, избавьтесь от таймера и вызовите ShowNextImage() в событии щелчка.

На странице указан следующий XAML:

<Image x:Name="myImg" />

Код выглядит следующим образом:

private DispatcherTimer tmr = new DispatcherTimer();

private List<string> images = new List<string>();

private int imageIndex = 0;

public MainPage()
{
    InitializeComponent();

    Loaded += new RoutedEventHandler(MainPage_Loaded);
}

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

    LoadImages();

    ShowNextImage();
}

private void LoadImages()
{
    // list the files (includede in the XAP file) here
    images.Add("/images/filename1.jpg");
    images.Add("/images/filename2.jpg");
    images.Add("/images/filename3.jpg");
    images.Add("/images/filename4.jpg");
}

private void ShowNextImage()
{
    var bi = new BitmapImage(new Uri(images[imageIndex], UriKind.Relative));

    myImg.Source = bi;

    imageIndex = (imageIndex + 1) % images.Count;
}

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

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);
}

Пример кода, который показывает использование кнопки для продвижения кода, можно загрузить с http://cid -cc22250598bf7f04.office.live.com / self.aspx / Public / SlideShowDemo.zip

1 голос
/ 07 декабря 2010

Самый простой способ - создать коллекцию изображений и перейти к следующему изображению в коллекции при переходе на следующую страницу сводной страницы.

Другое решение - создать пользовательский контроль. Здесь - руководство, как сделать это в Silverlight (но не в WP7, но очень похоже).

...