C# 绘制几万小图片,如何提高速度?
我有一个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();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最耗时的再哪里,你得考察一下。估计BlockInfoList.Exists、BlockInfoList.Find、大量的文件检查和读取操作都不会很快。