| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2753 人关注过本帖
标题:c#关于图加载缓慢的问题
只看楼主 加入收藏
open382000
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-6-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
c#关于图加载缓慢的问题
我有个是加载图片的程序,把treeview上文件夹里面的图片,都显示在listview上面。
我发现图片一多listview显示非常缓慢, 请问有什么方法可以改进的么。。

求指点~~~


我的代码是
 #region 加载图片
        /// <summary>
        /// 加载图片
        /// </summary>
        /// <param name="path">指定加载的路径名</param>
        private void LoadFile(string path)
        {
            listView.Items.Clear();

            if (Directory.Exists(path) == false) return;


            DirectoryInfo dirInfo = new DirectoryInfo(path);
            int width = 100;
            int height = 100;



            ImageList fileImage = new ImageList();
            fileImage.ColorDepth = ColorDepth.Depth32Bit;
            listView.LargeImageList = fileImage;


            listView.LargeImageList.ImageSize = new Size(width, height);
            FileInfo[] fi = dirInfo.GetFiles("*.jpg");
            foreach (FileInfo file in fi)
            {
                ListViewItem item = new ListViewItem();

                Image imgSrc = Image.FromFile(path + "\\" + Path.GetFileNameWithoutExtension(file.Name) + ".jpg");
                Image img = ListZoomAuto(imgSrc, 100, 100);//图形的缩放
                imgSrc.Dispose();
==================================
还有个问题在这里:
    上面3句换这4句 为什么不可以呢。。。。。。。。。
                var fileStream = file.Open(FileMode.Open);
                Image imgSrc = Image.FromStream(fileStream);
                Image img = ListZoomAuto(imgSrc, 100, 100);
                fileStrem.Closed();
================================

                fileImage.Images.Add(img);

                item.Text = Path.GetFileNameWithoutExtension(file.FullName);
                item.ImageIndex = fileImage.Images.Count - 1;
   
                item.Tag = file.FullName;
                listView.Items.Add(item);

            }

        }
        #endregion
希望高手能指点1,2
搜索更多相关主题的帖子: return private 图片 false 
2012-08-21 15:09
comeguojiaxi
Rank: 2
等 级:论坛游民
威 望:3
帖 子:30
专家分:73
注 册:2012-6-7
收藏
得分:20 
treeView中有文件夹项、里面有图片。程序运行时加载的话很慢。
你还是采用缓存机制嘛!
2012-08-21 15:38
open382000
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-6-29
收藏
得分:0 
回复 2楼 comeguojiaxi
我不知道如何使用缓存机制 能给我个思路方法或者额外的参考代码么
2012-08-21 16:12
comeguojiaxi
Rank: 2
等 级:论坛游民
威 望:3
帖 子:30
专家分:73
注 册:2012-6-7
收藏
得分:0 
缓存(Cache类):有客户端缓存、静态文件缓存。服务器端缓存和动态缓存(开发网站(有网页形式的居多))
    protected void Page_Load(object sender, EventArgs e)

    {

        ArrayList myarray = new ArrayList();         //创建数组数据

        myarray.Add("1.学习园地");

        myarray.Add("2.交流论坛");

        myarray.Add("3.帮助");

        //将数组添加到缓存中——使用Add方法

        Cache.Add("Category", myarray, null, DateTime.Now.AddSeconds(60), TimeSpan.Zero, CacheItemPriority.Normal, null);

        myarray[1] = "2.交流园地";                     //修改数组数据  

        Cache.Insert("Category", myarray);           //使用Insert方法修改缓存数据

        string tmpStr = "这是一个临时数据";

        Cache["tmpdata"] = tmpStr;

        //使用Get方法获取缓存数据

        Response.Write(Cache.Get("tmpdata").ToString()+"<br/>");/

        Cache["tmpdata"] = "这是一个临时字符串";         //重新为缓存赋值的技巧

        Response.Write(Cache.Get("tmpdata").ToString() + "<br/>");

        //使用GetType方法判断缓存数据的类型

        if (Cache["Category"].GetType().Name == "ArrayList")

            Response.Write("类型是数组");

        //使用GetEnumerator方法遍历缓存中的数据

        IDictionaryEnumerator mycache = Cache.GetEnumerator();

        while (mycache.MoveNext())

            Response.Write(mycache.Value + "<br/>");

        Cache.Remove("tmpdata");//使用Remove方法移除缓存的临时数据

}

技巧:在使用GetType方法时,如果要判断类型,需要使用Object.GetType().Name属性获取类型的名称。

上述代码的运行结果如下:

这是一个临时数据

这是一个临时字符串

类型是数组这是一个临时字符串

System.Collections.ArrayList

其中在读取类型为ArrayList的数据时,由于没有进行类型转换,所以取出的是类型为“System.Collections.ArrayList”的对象
这是Web中的一段实例。WinForm中运用的话应该跟Asp中的缓存没有太大的区别。
缓存可以自动清空、不过缓存过多容易造成程序运行时慢、
2012-08-29 13:22
快速回复:c#关于图加载缓慢的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012324 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved