有效更新图像? (visual c#)

时间:2018-02-07 10:46:58

标签: c# visual-studio bitmap picturebox lockbits

我正在编写一个程序,需要对1400 x 900像素的图像进行大量更新(大约每秒钟左右)。在我目前的构建中,我使用了一个lockbits函数,该函数从数组中调用数据(我用它来存储有关地图上每个像素的数据),并将正确的像素放在位图上。

full code

示例,因为它不会让我发布

        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

1 个答案:

答案 0 :(得分:0)

问题似乎与数组的迭代有关,而不是像素本身的位置。由于这意味着标题是错误的,我将关闭它并可能提出一个新问题。