目前,我正在创建一个1000x1000的位图,仅调用Bitmap.SetPixel()函数就需要大约0.3秒。
实际上,我可能只绘制了50%的像素,因此实际上只有500,000个setpixel调用。虽然这些调用似乎很多,但是相比于视频游戏而言,其处理更多像素(有些是程序生成)。
显然,Bitmap.SetPixel没有针对速度进行优化,但如果我需要每秒更新20-30次位图以获得良好的动画效果,则这种方式过于缓慢,那么我的选择是什么呢?
目前,我正在创建一个1000x1000的位图,仅调用Bitmap.SetPixel()函数就需要大约0.3秒。
实际上,我可能只绘制了50%的像素,因此实际上只有500,000个setpixel调用。虽然这些调用似乎很多,但是相比于视频游戏而言,其处理更多像素(有些是程序生成)。
显然,Bitmap.SetPixel没有针对速度进行优化,但如果我需要每秒更新20-30次位图以获得良好的动画效果,则这种方式过于缓慢,那么我的选择是什么呢?
Bob Powell在访问像素映射时有一篇非常好的教程,可以直接在内存中访问。
FastPixel?:http://www.codeproject.com/KB/GDI-plus/FastPixel.aspx
FastPixel?是一个高效的图像处理库,可以快速读取、修改和写入图像像素。它支持多种图像格式,并提供了简单易用的API接口,方便开发人员在IT技术领域中使用。FastBitmap fb = new FastBitmap(b);
fb.LockImage();
...
fb.SetPixel(x, y, Color.Red);
...
fb.UnlockImage();