Jak wydobyc wartość RGB z konkretnego piksela ekranu?

0

Witam!
Potrzebuje wydobyć wartosc RGB z konkretnego piksela ekranu, ale zupelnie nie wiem jak to zrobic.
Bylbym wdzieczny za wskazowki.
Pozdrawiam

0

Szukaj! Było niedawno.

0

Tak to było w starym dobrym pascalu...

FUNCTION GetPixel(Buf :Pointer; X, Y :Word) :Byte; ASSEMBLER;
ASM
  LES  DI, Buf
  MOV  AX, [Y]
  MOV  DI, AX
  SHL  AX, 8
  SHL  DI, 6
  ADD  DI, AX
  ADD  DI, [X]
  MOV  AL, BYTE PTR ES:[DI]
END; { GetPixel }

A rozbicie na RGB

PROCEDURE GetColor(Kolor :Byte; VAR AColorRec :TColorRec); ASSEMBLER;
ASM
    MOV  DX, 3C7h
    MOV  AL, [Kolor]               { Port[$3C7] := Kolor      }
    OUT  DX, AL
    MOV  DX, 3C9h

    LES  DI, AColorRec             { ES = segment, DI = offset }
    IN   AL, DX
    MOV  BYTE PTR ES:[DI+0], AL    { AColorRec.R := Port[$3C9] }
    IN   AL, DX
    MOV  BYTE PTR ES:[DI+1], AL    { AColorRec.G := Port[$3C9] }
    IN   AL, DX
    MOV  BYTE PTR ES:[DI+2], AL    { AColorRec.B := Port[$3C9] }
END; { GetColor }

0
var C:TCanvas;
begin
C:=TCanvas.Create;
C.Handle:=GetWindowDC(GetDesktopWindow);

Color:=C.Pixels[x,y];
C.Free;
end;

a skladowe wyciaga sie tak:

R:=GetRValue(color);
G:=GetGValue(color);
B:=GetBValue(color);

1 użytkowników online, w tym zalogowanych: 0, gości: 1