Co robię źle że dopiero po przejechaniu 3/4 pikseli z danym kolorem program mi pobiera kolor?
procedure TForm_pobieranie_koloru.kolor;
var
pozycja: TPoint;
begin
GetCursorPos(pozycja);
Panel2.Color := KolorPiksela(pozycja.X, pozycja.Y); // wyświetlanie elementu w danym kolorze
Panel3.caption := KolorFormatowany(KolorPiksela(pozycja.X, pozycja.Y)); // wyświetlanie nazwy dla koloru
end;
a poniżej funkcje KolorPiksela i KolorFormatowany:
function KolorPiksela(const X, Y: Integer): TColor;
var
k: TCanvas;
begin
k := TCanvas.Create;
try
k.Handle := GetWindowDC(GetDesktopWindow);
Result := GetPixel(k.Handle, X, Y); // X- szerokość Y-wysokość
finally
k.Free;
end;
end;
function KolorFormatowany(DColor:TColor):string;
var
temp_RGB : TColorRef;
begin
temp_RGB := ColorToRGB(DColor) ;
Result:=Format('#%.2x%.2x%.2x',[GetRValue(temp_RGB),GetGValue(temp_RGB),GetBValue(temp_RGB)]);
end;