WP8: c#应用程序在更改BitMapImage时崩溃

本文关键字:BitMapImage 崩溃 应用程序 WP8 | 更新日期: 2023-09-27 18:05:10

好吧,我不知道是什么原因导致我的应用程序崩溃,我根本不明白发生了什么。我将很快解释我的应用程序可以做什么,什么是我的问题。此外,我在这里几乎没有读到任何关于这方面的话题,只是在不同的谷歌网站上点击。我找不到解决办法,所以我不得不问!

我有一个图像设置为背景->工作良好。

我有一个TextBlock显示不同的文本每15秒,由计时器控制,每个文本保存在一个列表!->工作正常

我有一个渐入/渐出的文本->工作良好。

我在底部有一个应用程序栏->很好。

用代码的和平来改变一个明确的图片->工作得很好。

private void Appearance_Click(object sender, EventArgs e)
    {
         Hintergrund.Source = new BitmapImage(new Uri("/Pictures/StarsNight19.jpg",    UriKind.Relative));
    }

嗯,我有大约20个不同的图像,都有相当相同的名称,保存在我的项目文件夹。路径如代码片段所示:/Pictures/StarsNightXX.jpg

Build Action设置为:CONTENT(基本上一切都试过了)

Copy To Output Directory设置为:Copy Always.

现在我的问题是。

我把图片的名字保存在一个列表中。

        .....
        pictures.Add("StarsNight4.jpg");
        pictures.Add("StarsNight5.jpg");
        pictures.Add("StarsNight6.jpg");
        ....

我使用与之前相同的操作,希望它在点击应用程序栏中的漂亮小按钮时改变图像:

private void Appearance_Click(object sender, EventArgs e)
    {
        Random rnd = new Random();
        int next = rnd.Next(0, pictures.Count - 1);
        background.Source = new BitmapImage(new Uri("/Pictures/"+pictures.ElementAt(next), UriKind.RelativeOrAbsolute));
    }

APP崩溃

我就是想不出问题在哪里。

如开头所示,写一个显式的名称来改变它,效果很好…

也许有人能告诉我这个列表是否引起了问题?我就是想不明白

"循环它"也不工作:

int i = 0;
    private void Appearance_Click(object sender, EventArgs e)
    {
        if (i >= pictures.Count) i = 0; 
        background.Source = new BitmapImage(new Uri("/Pictures/" + pictures.ElementAt(i), UriKind.RelativeOrAbsolute));
        i++;
    }

因为我直接在我的WP上测试我的应用程序,我不知道我得到了什么样的异常。没有办法在我的电脑上编译和测试它只是为了让你知道。

…我在这里失去了理智

WP8: c#应用程序在更改BitMapImage时崩溃

请尝试这个源代码,我已经尝试处理在下面的源代码中创建的对象,使用您的列表和其他代码,如循环,因为它是。

private static BitmapImage  bi = null;//this line at the top, not in function
private static Image  si = null;//this line at the top, not in function
if bi!=null)
            {
                bi.Dispose();
                bi = null;
            }
if si!=null)
            {
                si.Dispose();
                si = null;
            }
BitmapImage bi = new BitmapImage();
Image si = new Image();
bi.BeginInit();
bi.UriSource = new Uri(@"/img/img1.jpg",UriKind.RelativeOrAbsolute);
bi.EndInit();
si.Source = bi;