账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    C# 绘制几万小图片,如何提高速度?
    70
    0

    我有一个schematic文件,是《Minecraft》的一种纹理文件,里面有各种方块的ID数据。
    我打算读取里面的数据然后根据ID编号绘制到我的程序上面,但是我发现我的方法非常慢,别人生成一个256256大小的图片几乎很快(1个图片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();
    2
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部