C#WPF显示图像网格

时间:2017-04-27 22:14:12

标签: c# json wpf image grid

我是一名C#/编程初学者。

我尝试显示很多像相册或网格的图片。

到目前为止看起来像这样: http://i.imgur.com/LC7lhXi.jpg

但是有空位,当我向下滚动时看起来更糟糕:http://i.imgur.com/QuFOgr1.png

我在ScrollViewer中创建了一个UniformGrid。这是我获得我想要的最简单方法。也许不是最好的解决方案。如果我添加更多图片,图像会变小。我认为这是统一网格的原因。

以下是我如何做到的两个代码示例。

js.movi​​e1是一个包含少数成员的对象。 js.movi​​e1 [0] .poster是第一张图片的文件名(共有275张图片)。 该对象由JSON.NET框架创建。它只是读取一个JSON文件集的一些变量,我把对象放在一个列表中。 例如js.movi​​e1 [0] .poster是作为图片的海报的文件名,js.movi​​e1 [0] .title是电影的标题,依此类推。

private void btnShow_Click(object sender, RoutedEventArgs e)
    {
        uGrid.Children.Clear();
        string strWebAdress = @"https://image.tmdb.org/t/p/original/"; 



        for (int i = 0; i < js.movie1.Count; i++)

        {


            Image img = new Image();
            BitmapImage bimg = new BitmapImage(new Uri(strWebAdress + js.movie1[i].poster));


            //bimg.sou
            img.BeginInit();
            img.Source = bimg;
            img.EndInit();

            uGrid.Children.Add(img);
        }

或者我这样做了:

private void btnShow_Click(object sender, RoutedEventArgs e)
    {
        uGrid.Children.Clear();
        string strWebAdress = @"https://image.tmdb.org/t/p/original/"; 

        List<string> listImage = Directory.GetFiles(strPath, "*jpg").Select(System.IO.Path.GetFileName).ToList();
        List<Image> imgList = new List<Image>();

        for (int i = 0; i < js.movie1.Count; i++)

        {
            Image Controlimage = new Image
            {
                Source = new BitmapImage(new Uri(strCoverUrl + js.movie1[i].poster)),

            };


            uGrid.Children.Add(Controlimage);
        }

我的问题是某些图片之间有空格,我不能像我想的那样调整它们。我想在程序加载图片时滚动。 该程序需要1.5 GB的RAM和大量的CPU电源,所以我需要一个betetr解决方案。

使用Foreach我可以滚动但我为此创建了一个数组。我不知道如何用一个物体来计算foreach。至少不是我的对象的使用方式。

必须有一种方法来加载和显示来自URL的图片,这些图片不会阻止UI并且需要如此强大的功能。 就像我说我是一个血腥的初学者;)

问候Fabian:)

0 个答案:

没有答案