Hallo allemaal,
Ik heb maar even een nieuw topic geopent, omdat mijn volgende probleem niet zo zeer met scanline te maken heeft, maar met de while loop daarom heen. De onderstaande code werkt perfect zonder de while loop. Maar als ik de while loop hieraan toevoeg, dan werkt het niet meer.
Ik had deze code eerst achter een TTimer hangen. Dat werkte perfect. De reden dat ik deze aan een buttonclick aan een while-loop wil hangen, is dat deze code zo snel mogelijk achterelkaar uitgevoerd dient te worden. Een timer kan ik niet lager zetten dan 1 ms.
Zodra ik while toevoeg aan de code, werkt de code helemaal niet meer! Weet iemand misschien wat ik hier fout doe?
Ik heb maar even een nieuw topic geopent, omdat mijn volgende probleem niet zo zeer met scanline te maken heeft, maar met de while loop daarom heen. De onderstaande code werkt perfect zonder de while loop. Maar als ik de while loop hieraan toevoeg, dan werkt het niet meer.
Ik had deze code eerst achter een TTimer hangen. Dat werkte perfect. De reden dat ik deze aan een buttonclick aan een while-loop wil hangen, is dat deze code zo snel mogelijk achterelkaar uitgevoerd dient te worden. Een timer kan ik niet lager zetten dan 1 ms.
Zodra ik while toevoeg aan de code, werkt de code helemaal niet meer! Weet iemand misschien wat ik hier fout doe?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| const
RectWidth = 290;
RectHeight = 1;
RectLeft = 866;
RectTop = 660;
var
Bitmap: TBitmap;
DC: HDC;
w, h, L, T, x, y, color: Integer;
PixelPtr: PRGBQuad;
I: Integer;
begin
while B = False do begin
I := 0;
Bitmap := TBitmap.Create;
try
w := RectWidth;
h := RectHeight;
L := RectLeft;
T := RectTop;
Bitmap.Width := w;
Bitmap.Height := h;
DC := GetDC(0);
try
BitBlt(Bitmap.Canvas.Handle, 0, 0, w, h,
DC, L, T, SRCCOPY);
finally
ReleaseDC(0, DC);
end;
Bitmap.PixelFormat := pf32Bit;
for y := 0 to h - 1 do
begin
PixelPtr := PRGBQuad(Bitmap.ScanLine[y]);
for x := 0 to w - 1 do
begin
I := I +1;
Inc(PixelPtr);
Color := PixelPtr^.rgbRed;
if Color = 0 then begin Exit; end;
if Color = 227 then begin SetCursorPos (L+I, T); end;
if Color < 50 then begin SetCursorPos (L+I, T); end;
if Color = 208 then begin SetCursorPos (L+I+50, T); end;
end;
end;
finally
Bitmap.Free;
end;
end;
end; |