[Delphi] Kolor piksela pod kursorem

0

Chce sprawdzic kolor piksela pod kursorem myszki. Uzywalem do tego Canvas.Pixels[X,Y], ktory zwracal mi potrzebny TColor. Niestety o ile dziala np. odczytywanie koloru tekstu z Label'a to za zadne skarby nie moge w ten sposob odczytac koloru figury narysowanej przy uzyciu Shape'a. Pewnie ma to zwiazek z Canvasem. Niestety nie wiem jak moglbym to ominac...

I jeszcze cos pewnie latwego. Jak skonwertowac TColor do Stringa?

0

glupio gadzasz :( no ale pierw weź HDCD pulpitu (jak przyrobieniu screenshotow) a potem mojkolor := handle.canvas.pixels[posx,posy-1];

0

Moze sie myle, ale chyba chodzi o cos takiego:

procedure TForm1.FormClick(Sender: TObject);
var punkt : TPoint;
kolor : TColor
begin
GetCursorPos(punkt);
Canvas.Handle:=GetWindowDC(GetDesktopWindow);
kolor := Handle.Canvas.Pixels(punkt.X,punkt.Y-1);
ShowMessage(ColorToString(kolor));
end;

niestety kompilator wywala blad...

0

procedure TForm1.FormClick(Sender: TObject);
var punkt : TPoint;
kolor : TColor;
c: TCanvas;
begin
GetCursorPos(punkt);
c:=TCanvas.Create;
c.Handle:=GetWindowDC(GetDesktopWindow);
kolor:=c.Pixels(punkt.X,punkt.Y);
ShowMessage(ColorToString(kolor));
ReleaseDC(GetDesktopWindow, c.Handle);
FreeAndNil(c)
end;

0
  1. GetCursorPos(pt) - pozycja bezwzględna myszy
  2. GetWindowFromPoint(pt) - uchwyt okna pod kursorem myszy
  3. GetDC - device context tego okna
  4. później zmienić współrzędne myszy na lokalne dla tego okna
  5. GetPixel(HDC hdc, POINT pt) - pobrać pixela
0

Dzieki wam wszytkim za checi ale to dalej nie dziala tak jak potrzeba... Tzn. gdy klikne na pustym miejscu formy zwraca mi dobry kolor. Ale gdy klikne na TShape to nic sie nie pokazuje. Nawet okienko nie wyskakuje.

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