windows 商店应用中带有调度程序计时器的图像幻灯片
image slideshow with dispatcher timer in windows store apps
我想在我的 windows 商店应用程序中使用调度程序计时器制作幻灯片图像。但是,我有一个问题:如果图像已经达到最终图像,幻灯片不想从第一张图像重复幻灯片,而是直接第二张图像。例如:我有5张图片,当到了第五张图片时,幻灯片不希望重复第一张图片,而是直接播放第二张图片。
这是我的 xaml:
<Image x:Name="sceneriesBtn" IsDoubleTapEnabled="False" VerticalAlignment="Bottom" Tapped="sceneriesBtn_Tapped" Height="242" Stretch="UniformToFill"/>
这是我的 xaml.cs 代码:
public Home()
{
this.InitializeComponent();
}
DispatcherTimer playlistTimer1 = null;
List<string> Images1 = new List<string>();
protected override void OnNavigatedTo(NavigationEventArgs e)
{
ImageSource1();
}
private void ImageSource1()
{
Images1.Add("17-Ijen-Crater.jpg");
Images1.Add("19-Ranu-kumbolo-Semeru.jpg");
Images1.Add("30-Kelud-blitar.jpg");
Images1.Add("31-sarangan_lake.jpg");
Images1.Add("390-ranu_agung.jpg");
playlistTimer1 = new DispatcherTimer();
playlistTimer1.Interval = new TimeSpan(0, 0, 5);
playlistTimer1.Tick += playlistTimer_Tick1;
sceneriesBtn.Source = new BitmapImage(new Uri("ms-appx:///Sceneries/" + Images1[count1]));
playlistTimer1.Start();
}
int count1 = 0;
void playlistTimer_Tick1(object sender, object e)
{
if (Images1 != null)
{
if (count1 == Images1.Count - 1)
count1 = 0;
if (count1 < Images1.Count)
{
count1++;
ImageRotation1();
}
}
}
private void ImageRotation1()
{
sceneriesBtn.Source = new BitmapImage(new Uri("ms-appx:///Sceneries/" + Images1[count1].ToString()));
}
}
}
如何解决?
逻辑错误。在您的代码中,计数器更改了两次,第一次是从 Images1.Count - 1
到 0
,然后在第二个 if 语句中从 0
递增到 1
。
我的修复
if (count1 < Images1.Count)
count1++;
if (count1 >= Images1.Count)
count1 = 0;
ImageRotation1();
我想在我的 windows 商店应用程序中使用调度程序计时器制作幻灯片图像。但是,我有一个问题:如果图像已经达到最终图像,幻灯片不想从第一张图像重复幻灯片,而是直接第二张图像。例如:我有5张图片,当到了第五张图片时,幻灯片不希望重复第一张图片,而是直接播放第二张图片。
这是我的 xaml:
<Image x:Name="sceneriesBtn" IsDoubleTapEnabled="False" VerticalAlignment="Bottom" Tapped="sceneriesBtn_Tapped" Height="242" Stretch="UniformToFill"/>
这是我的 xaml.cs 代码:
public Home()
{
this.InitializeComponent();
}
DispatcherTimer playlistTimer1 = null;
List<string> Images1 = new List<string>();
protected override void OnNavigatedTo(NavigationEventArgs e)
{
ImageSource1();
}
private void ImageSource1()
{
Images1.Add("17-Ijen-Crater.jpg");
Images1.Add("19-Ranu-kumbolo-Semeru.jpg");
Images1.Add("30-Kelud-blitar.jpg");
Images1.Add("31-sarangan_lake.jpg");
Images1.Add("390-ranu_agung.jpg");
playlistTimer1 = new DispatcherTimer();
playlistTimer1.Interval = new TimeSpan(0, 0, 5);
playlistTimer1.Tick += playlistTimer_Tick1;
sceneriesBtn.Source = new BitmapImage(new Uri("ms-appx:///Sceneries/" + Images1[count1]));
playlistTimer1.Start();
}
int count1 = 0;
void playlistTimer_Tick1(object sender, object e)
{
if (Images1 != null)
{
if (count1 == Images1.Count - 1)
count1 = 0;
if (count1 < Images1.Count)
{
count1++;
ImageRotation1();
}
}
}
private void ImageRotation1()
{
sceneriesBtn.Source = new BitmapImage(new Uri("ms-appx:///Sceneries/" + Images1[count1].ToString()));
}
}
}
如何解决?
逻辑错误。在您的代码中,计数器更改了两次,第一次是从 Images1.Count - 1
到 0
,然后在第二个 if 语句中从 0
递增到 1
。
我的修复
if (count1 < Images1.Count)
count1++;
if (count1 >= Images1.Count)
count1 = 0;
ImageRotation1();