在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C#  網(wǎng)絡(luò)安全/ C# 繪制幾萬(wàn)小圖片,如何提高速度?

C# 繪制幾萬(wàn)小圖片,如何提高速度?

我有一個(gè)schematic文件,是《Minecraft》的一種紋理文件,里面有各種方塊的ID數(shù)據(jù)。
我打算讀取里面的數(shù)據(jù)然后根據(jù)ID編號(hào)繪制到我的程序上面,但是我發(fā)現(xiàn)我的方法非常慢,別人生成一個(gè)256256大小的圖片幾乎很快(1個(gè)圖片1616像素).
而我這邊完全繪制完需要6秒左右。以下是我的代碼:

            SourceBlueMap = new Bitmap(BlocksRect.Width, BlocksRect.Height);

            Graphics Gpi = Graphics.FromImage(SourceBlueMap);

            AlphaBlock block;

            string strPath = @"C:\Users\Administrator\Desktop\Blocks";

            BlockInfo blockinfo;

            for (int x = 0; x < iXDim; x++)
            {
                for (int y = 0; y < iYDim; y++)
                {
                    for (int z = 0; z < iZDim; z++)
                    {
                        block = Blocks.GetBlock(x, y, z);

                        rect.X = x * BlockWidth;
                        rect.Y = z * BlockWidth;

                        if (BlockInfoList.Exists(info =>
                            (info.ID == block.ID && info.Data == block.Data)))
                        {
                            blockinfo = BlockInfoList.Find(info =>
                            (info.ID == block.ID && info.Data == block.Data));

                            if (File.Exists(strPath + "\\" + blockinfo.Name + ".png"))
                            {
                                using (Bitmap bmp = new Bitmap(strPath + "\\" + blockinfo.Name + ".png"))
                                {
                                    Gpi.DrawImage(bmp, rect);
                                }
                            }
                        }  
                    }
                }
            }

            Gpi.Dispose();
回答
編輯回答
冷眸

最耗時(shí)的再哪里,你得考察一下。估計(jì)BlockInfoList.Exists、BlockInfoList.Find、大量的文件檢查和讀取操作都不會(huì)很快。

2018年8月16日 16:27