使用 Dim 时 Ram 的使用变得疯狂......作为带计时器的新位图
Ram usage going crazy while using Dim ... as New Bitmap with a timer
我正在制作一个机器人,它需要每 100 毫秒在几个点检测一些像素颜色。
我发现的唯一方法是将当前屏幕保存到位图中并从该位图中获取这些颜色。
但似乎每 100 毫秒它都会创建一个新的位图并且不会摆脱前一个位图,这会不断增加 ram 使用率!
这是我的代码:
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 等后都是一样的...
请帮忙!否则,无需创建那些愚蠢的位图即可获得像素颜色的其他方法会有很大帮助,谢谢 :)
好吧,我找到了解决方法!
忘了最后几行:
ImgGraphics.Dispose()
瞧瞧。
我正在制作一个机器人,它需要每 100 毫秒在几个点检测一些像素颜色。 我发现的唯一方法是将当前屏幕保存到位图中并从该位图中获取这些颜色。 但似乎每 100 毫秒它都会创建一个新的位图并且不会摆脱前一个位图,这会不断增加 ram 使用率!
这是我的代码:
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 等后都是一样的...
请帮忙!否则,无需创建那些愚蠢的位图即可获得像素颜色的其他方法会有很大帮助,谢谢 :)
好吧,我找到了解决方法!
忘了最后几行:
ImgGraphics.Dispose()
瞧瞧。