unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Shape1: TShape;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function GetColor(const WinHandle: HWND; Coordinates: TPoint): TColor;
var
Canvas: TCanvas;
begin
Canvas := TCanvas.Create;
try
Canvas.Handle := GetWindowDC(WinHandle);
Result := GetPixel(Canvas.Handle, Coordinates.X, Coordinates.Y);
finally
Canvas.Free;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
P: TPoint;
begin
GetCursorPos(P);
{получить цвет пикселя под курсором в любой точке экрана }
Shape1.Brush.Color := GetColor(GetDesktopWindow,P);
{ или... цвет пикселя под курсором в любой точке формы }
// P := Self.ScreenToClient(P);
// Inc(P.X, Width - ClientWidth);
// Inc(P.Y, Height - ClientHeight);
// Shape1.Brush.Color := GetColor(Self.Handle,P);
{ или... цвет пикселя в указанной координате на форме }
// P := Point(35,65);
// Inc(P.X, Width - ClientWidth);
// Inc(P.Y, Height - ClientHeight);
// Shape1.Brush.Color := GetColor(Self.Handle,P);
Application.ProcessMessages;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := not Timer1.Enabled;
end;
end.