【发布时间】:2009-09-24 23:16:32
【问题描述】:
我在玩康威的生命游戏 - http://en.wikipedia.org/wiki/Conway's_Game_of_Life
我开始为 winforms 编码算法,现在想将我的工作移植到 windows mobile 6.1(紧凑框架)上。我看到了 Jon Skeet 的一篇文章,他在其中比较了几种不同的算法来计算游戏中的下一代。他使用一个字节数组来存储单元状态(活动或死亡),然后将该数组复制到 8bpp 位图。对于每一代,他计算出每个字节的状态,然后将数组复制到位图,然后将该位图绘制到图片框。
void CreateInitialImage()
{
bitmap = new Bitmap(Width, Height, PixelFormat.Format8bppIndexed);
ColorPalette palette = bitmap.Palette;
palette.Entries[0] = Color.Black;
palette.Entries[1] = Color.White;
bitmap.Palette = palette;
}
public Image Render()
{
Rectangle rect = new Rectangle(0, 0, Width, Height);
BitmapData bmpData = bitmap.LockBits(rect, ImageLockMode.ReadWrite, bitmap.PixelFormat);
Marshal.Copy(Data, 0, bmpData.Scan0, Data.Length);
bitmap.UnlockBits(bmpData);
return bitmap;
}
他上面的代码非常简单,渲染速度非常快。 Jon 正在使用 Windows 窗体,但现在我想将我自己的版本移植到 Windows Mobile 6.1(紧凑框架)上,但是 . . . .没有办法在cf中将位图格式化为8bpp。
谁能建议一种将字节数组渲染到 CF 中可绘制图像的方法。这个数组是在代码中动态创建的(它不是从磁盘上的图像文件加载的)。我基本上需要存储一个由字节表示的单元格数组,它们要么是活着的,要么是死的,然后我需要将该数组绘制为图像。游戏在 CF 上特别慢,所以我需要实现巧妙的优化算法,但还需要尽可能快地渲染,如果只有在紧凑框架上可用,上述解决方案将非常完美。
非常感谢您的帮助
有什么建议吗?
【问题讨论】:
标签: c# compact-framework