Растровые изображения, сохраненные в массиве, удаляются после доступа к ним - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь зациклить массив растровых изображений, но он покажет его только один раз, а затем массив будет пустым.Вы можете увидеть это в использовании ОЗУ, которое удаляет последнее доступное растровое изображение из массива.

Код:

 CurrentBuffer++;

 var temp = bitmaparray[CurrentBuffer];

 if (pictureBox1.Image != null) { 
   pictureBox1.Image.Dispose(); 
 }

 if (CurrentBuffer == BufferFrames) 
   CurrentBuffer = 1;   // bufferframes is the total count of elements -1 in the array

 pictureBox1.Image = temp;

 // attempt to put the image back in the array again, but still doesn't work
 bitmaparray[CurrentBuffer] = temp; 

Желаемый результат заключается в том, что он будет отображать растровые изображения в хронологическом порядке.снова и снова.Но теперь он будет проходить через него один раз, а затем массив будет пуст.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 20 февраля 2019

На каждой итерации вы присваиваете изображение pictureBox1.Image.

pictureBox1.Image = temp;

Затем на следующей итерации вы вызываете dispose для этого изображения:

pictureBox1.Image.Dispose(); 

Здесь, pictureBox1.Image указывает на изображение в вашем bitmaparray, так что вы фактически удаляете изображение из массива.

Я думаю, вам просто нужно избавиться от Dispose.

(все это основано на комментарии Уве Кейма, спасибо)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...