我正在编写一个程序,需要对1400 x 900像素的图像进行大量更新(大约每秒钟左右)。在我目前的构建中,我使用了一个lockbits函数,该函数从数组中调用数据(我用它来存储有关地图上每个像素的数据),并将正确的像素放在位图上。
示例,因为它不会让我发布
if (enb == 1 || enb == 6 || enb == 7 || enb == 8 || enb == 9)
{
rgbValues[(y * bmpData.Stride) + (x * 4) + 3] = 255; //alpha
rgbValues[(y * bmpData.Stride) + (x * 4) + 2] = Convert.ToByte(provinces[(Convert.ToInt16(tmp3n)), 13]); //red
rgbValues[(y * bmpData.Stride) + (x * 4) + 1] = Convert.ToByte(provinces[(Convert.ToInt16(tmp3n)), 14]); //green
rgbValues[(y * bmpData.Stride) + (x * 4)] = Convert.ToByte(provinces[(Convert.ToInt16(tmp3n)), 15]); //blue
}
我的问题是,一旦位图上有大量颜色,地图更新可能需要花费大量时间,导致整个运行时间增加太多(在运行时间后期我发现它可能需要五秒钟来更新图像。)
我当前的算法是否存在可能导致此问题的问题?或者我可以使用更合适/更有效的算法吗?
道歉,如果这不是一个适当的问题,但我很难知道如何做到这一点,并且我非常确定它的可能性。谢谢你< 3
答案 0 :(得分:0)
问题似乎与数组的迭代有关,而不是像素本身的位置。由于这意味着标题是错误的,我将关闭它并可能提出一个新问题。