so ich schreib mal meinen code und frag mal ganz doof in den raum warum der code zwar läuft aber mir kein ergebnis bringt das er eig. soll ^^
Code: Alles auswählen
Procedure CopyImageToMem(Img.l, *mem)
Protected bmi.BITMAPINFO
Protected w.l, h.l, hBmp.l, hDC.l
w = ImageWidth(Img)
h = ImageHeight(Img)
hBmp = ImageID(Img)
bmi\bmiHeader\biSize = SizeOf(BITMAPINFOHEADER)
bmi\bmiHeader\biWidth = w
bmi\bmiHeader\biHeight = h
bmi\bmiHeader\biPlanes = 1
bmi\bmiHeader\biBitCount = 32
bmi\bmiHeader\biCompression = #BI_RGB
hDC = StartDrawing(ImageOutput(Img))
If GetDIBits_(hDC, hBmp, 0, h, *mem, bmi, #DIB_RGB_COLORS)
StopDrawing()
ProcedureReturn #True
Else
OpenConsole()
StopDrawing()
ProcedureReturn #False
EndIf
EndProcedure
Global Mem.l
Mem = AllocateMemory(1024)
Procedure.l DesktopOutput()
PokeL(Mem, 1)
ProcedureReturn Mem
EndProcedure
CreateImage(0,GetSystemMetrics_(#SM_CXSCREEN),GetSystemMetrics_(#SM_CYSCREEN))
hDC = StartDrawing(ImageOutput(0))
BitBlt_(hDC,0,0,ImageWidth(0),ImageHeight(0),GetDC_(GetDesktopWindow_()),0,0,#SRCCOPY )
StopDrawing()
LoadImage(1,"data/save.bmp")
StartDrawing(ImageOutput(1))
Debug Hex(Point(0,15))
StopDrawing()
time = ElapsedMilliseconds()
wi0 = ImageWidth(0)
hi0 = ImageHeight(0)
wi1 = ImageWidth(1)
hi1 = ImageHeight(1)
*buffer0 = AllocateMemory(wi0*hi0*4)
*buffer1 = AllocateMemory(wi1*hi1*4)
CopyImageToMem(0,*buffer0)
CopyImageToMem(1,*buffer1)
*pos0.LONG = *buffer0
*pos1.LONG = *buffer1
bgr1 = *pos1\l
For y = 0 To hi0-1
For x = 0 To wi0-1
bgr0 = *pos0\l
If bgr0 = bgr1
*postemp0 = *pos0
*postemp1 = *pos1
found = 0
For y2 = 0 To hi1-1
For x2 = 0 To wi1-1
bgr0 = *pos0\l
bgr1 = *pos1\l
If bgr0 = bgr1
found+1
ElseIf bgr0 <> bgr1
Break 2
EndIf
*pos0 + 4
*pos1 + 4
Next x2
*pos0 = *postemp0 + (wi0 * y2)
Next y2
If found > 10
Debug found
If found = hi1 * wi1
Debug "saugut"
CreateImage(2,16,16)
StartDrawing(ImageOutput(2))
DrawImage(ImageID(0),x,y,16,16)
StopDrawing()
SaveImage(2,"C:/test2.bmp")
Break 2
EndIf
EndIf
*pos0 = *postemp0
*pos1 = *postemp1
EndIf
*pos0 + 4
Next
Next
Debug ""
Debug Str((ElapsedMilliseconds()-time))
Debug lol
;InvalidateRect_(0, 0, 0)
SaveImage(0,"C:/test.bmp")
SaveImage(1,"C:/test1.bmp")