Использование оперативной памяти сходит с ума при использовании Dim в качестве нового растрового изображения с таймером

Я делаю бота, который должен определять цвета пикселей в нескольких точках каждые 100 мс. Единственный способ, который я нашел, - это сохранить текущий экран в растровое изображение и получить эти цвета из этого растрового изображения. Но кажется, что каждые 100 мс он создает новое растровое изображение и не избавляется от предыдущего, что постоянно увеличивает использование оперативной памяти!

Вот мой код:

 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Dim Img As New Bitmap(1280, 720)
    Dim ImgGraphics As Graphics = Graphics.FromImage(Img)
    ImgGraphics.CopyFromScreen(0, 0, 0, 0, Img.Size)

    Dim Slot1Selec As Color = Img.GetPixel(1158, 572)
    If Slot1Selec.ToArgb = -65906 Then
        Label2.Text = ("1")
    Else : Label2.Text = ("0")
    End If
    Dim Slot1Life As Color = Img.GetPixel(1148, 559)
    If Slot1Life.ToArgb = -13052710 Then
        Label3.Text = ("1")
    Else : Label3.Text = ("0")
    End If

И я проверяю 16 цветов пикселей, здесь только 2, но это то же самое после Slot2Selec, Slot2life, Slot3Selec, Slot3Life и т. д.

Пожалуйста помоги ! Еще один способ получить цвет пикселя без создания этих глупых растровых изображений очень помог бы, спасибо :)


person Benekiki    schedule 28.03.2015    source источник


Ответы (1)


Хорошо, я нашел исправление!

Забыл эти строчки в конце:

    ImgGraphics.Dispose()

И вуаля.

person Benekiki    schedule 28.03.2015