сделать слайд шоу wp7 - PullRequest
       32

сделать слайд шоу wp7

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

Мне нужно сделать слайд-шоу с изображениями, хранящимися в моем изолированном хранилище ... но я новичок в Windows Phone и у меня есть некоторые трудности ... Я уже знаю, как представить изображения или показать изображения на экране. ... но я хочу представить изображения по 2 секунды каждый ... есть некоторая функциональность, чтобы определить время для воспроизведения? Любой пример?

 IsolatedStorageFileStream stream = new IsolatedStorageFileStream(name_image,       FileMode.Open, myIsolatedStorage);

                    var image = new BitmapImage();
                    image.SetSource(stream);
                    image1.Source = image;

Вот как я открываю изображение. У меня есть foreach с 5 именами изображений, затем я открываю каждое из них ... но я хочу видеть изображения через 2 секунды ..

Ответы [ 2 ]

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

Лучше использовать Reactive Extension.

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

В основном вам нужно сохранить изображения в коллекции, а затем использовать Rx (GenerateWithTime) для создания наблюдаемой последовательности с измерением временина основании коллекции.Наконец, вы вызываете метод, чтобы добавить одно изображение и подписать его на наблюдаемую последовательность.

Вот один рабочий пример,

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    // create a collection to store your 5 images
    var images = new List<Image>
        {
            new Image() { Source = new BitmapImage(new Uri("/ApplicationIcon.png", UriKind.Relative)), Width = 120, Height = 120 },
            new Image() { Source = new BitmapImage(new Uri("/ApplicationIcon.png", UriKind.Relative)), Width = 120, Height = 120 },
            new Image() { Source = new BitmapImage(new Uri("/ApplicationIcon.png", UriKind.Relative)), Width = 120, Height = 120 },
            new Image() { Source = new BitmapImage(new Uri("/ApplicationIcon.png", UriKind.Relative)), Width = 120, Height = 120 },
            new Image() { Source = new BitmapImage(new Uri("/ApplicationIcon.png", UriKind.Relative)), Width = 120, Height = 120 }
        };

    // create a time dimension (2 seconds) to the generated sequence
    IObservable<Image> getImages = Observable.GenerateWithTime(0, i => i <= images.Count - 1, i => images[i], _ => TimeSpan.FromSeconds(2), i => ++i);

    // subscribe the DisplayOneImage handler to the sequence
    getImages.ObserveOnDispatcher().Subscribe(DisplayOneImage);
}

private void DisplayOneImage(Image image)
{
    // MyItems is an ItemsControl on the UI
    this.MyItems.Items.Add(image);
}

Надеюсь, это поможет.:)

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

Вы можете перевести текущий поток в спящий режим на 2 секунды:

System.Threading.Thread.Sleep(2000);

Как последнее предложение в теле foreach.Это не очень опрятно, но это сделает работу.

...