Hallo allemaal,
Ik moet op mijn scherm een aantal vlak bijelkaar liggende pixels analyseren op kleur. Eerst gebruikte ik hiervoor de GetPixel functie. Deze was echter niet snel genoeg. Nu heb ik de onderstaande code geschreven aan de hand van een aantal examples die ik heb gevonden op internet:
Nu moet ik iets doen met die pointer. Ik ben alleen niet erg bekent met het op deze manier gebruiken van pointers. Weet iemand wat ik met PixelPtr^ moet doen om de RGB-kleur van de betreffende pixel te verkrijgen
Ik moet op mijn scherm een aantal vlak bijelkaar liggende pixels analyseren op kleur. Eerst gebruikte ik hiervoor de GetPixel functie. Deze was echter niet snel genoeg. Nu heb ik de onderstaande code geschreven aan de hand van een aantal examples die ik heb gevonden op internet:
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
| const
RectWidth = 200;
RectHeight = 100;
RectLeft = 10;
RectTop = 20;
var
Bitmap: TBitmap;
DC: HDC;
w, h, x, y: Integer;
PixelPtr: PRGBQuad;
begin
Bitmap := TBitmap.Create;
try
w := RectWidth;
h := RectHeight;
Bitmap.Width := w;
Bitmap.Height := h;
DC := GetDC(0);
try
BitBlt(Bitmap.Canvas.Handle, 0, 0, w, h,
DC, w, h, 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
//iets doen met pointer
Inc(PixelPtr);
end;
end;
finally
Bitmap.Free;
end; |
Nu moet ik iets doen met die pointer. Ik ben alleen niet erg bekent met het op deze manier gebruiken van pointers. Weet iemand wat ik met PixelPtr^ moet doen om de RGB-kleur van de betreffende pixel te verkrijgen