If you are trying to save CPU time, you aren't going to gain much, actually you may even cause more delay because you
would need to first test what is there currently before writing a new value...
Or could it be you need to simply address the points in a loop manner ?
For X := 0 to 320 do
For Y := 0 to 240 do
SetColor(X,Y, Random(…..));
That is just a conceptional thought.