efficiently updating an image? (visual c#)

29 Views Asked by At

Im writing a program that requires a lot of updates to be made to a 1400 x 900 pixel image (approx every second or so). In my current build i have used a lockbits function which recalls data from an array (which i have used to store data about each pixel on the map) and places the correct pixels on the bitmap.

full code

sample because it wont let me post otherwise

        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
        }

My issue is that once there is a large amount of colours on the bitmap, it can take a lot of time for the map to be updated, causing the entire run time to increase too much (late in run time i found it could take five seconds to update the image).

Is there any problems with my current algorithm that might be causing this issue? or is there any more suitable/efficient algorithms i could use instead?

Apologies if this isnt an appropriate question for here, but im stumped on how to do this, and im fairly sure its possible. Thank you <3

1

There are 1 best solutions below

0
Jamie Gorman On

The issue appears to be to do with the iteration through the array, rather than the placement of pixels themselves. Since that means the title is wrong, im gonna close this and potentially make a new question.