maak diavoorstelling wp7

Ik moet een diavoorstelling maken van afbeeldingen die zijn opgeslagen in mijn geïsoleerde opslagruimte .. maar ik ben beginner in Windows Phone en ik heb een aantal problemen. Ik weet al hoe ik de afbeeldingen moet presenteren of de afbeeldingen op het scherm moet weergeven .. maar ik wil je de afbeeldingen 2 seconden per foto presenteren. is er enige functionaliteit om de tijd te bepalen om te reproduceren? Een voorbeeld?

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

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

Dit is hoe ik de afbeelding open. Ik heb een foreach met 5 naam van afbeeldingen en dan open ik ze allemaal .. maar ik wil de afbeeldingen 2 seconden zien ..

1

2 antwoord

Een betere manier is om Reactive Extension te gebruiken.

Bekijk eerst mijn antwoord in deze bericht . Het vertelt je wat je nodig hebt en enkele handige links.

In principe moet u uw afbeeldingen in een verzameling opslaan en vervolgens Rx ( GenerateWithTime ) gebruiken om een ​​waarneembare sequentie met tijdsdimensie op basis van de verzameling te maken. Ten slotte noem je een methode om één afbeelding toe te voegen en te abonneren op de waarneembare sequentie.

Hier is een werkend voorbeeld,

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
   //create a collection to store your 5 images
    var images = new List
        {
            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 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);
}

Ik hoop dat dit helpt. :)

1
toegevoegd

U kunt de huidige thread gedurende 2 seconden laten slapen:

System.Threading.Thread.Sleep(2000);

Als de laatste zin in het foreach lichaam. Het is niet erg netjes, maar het zal het werk doen.

1
toegevoegd