Страница 1 из 1

Цвет точки под кусором мышки

СообщениеДобавлено: 22.10.2012 14:45:44
lillgrinn
На форме имется TImage. В него загружен рисунок. На рисунке имеется область закрашенная одним цветом.
Делаем клик мышкой на этой области или проводим мышкой по этой области.
Как получить цвет под указателем мышки?

P.S.: Все это под Linux-ом.

Re: Цвет точки под кусором мышки

СообщениеДобавлено: 22.10.2012 16:26:02
iskander
Код: Выделить всё
var
  MyColor: TColor;
  ...
  ...
procedure TMyForm.MyImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MyColor := MyImage.Canvas.Pixels[X, Y];
end;
:wink:

Re: Цвет точки под кусором мышки

СообщениеДобавлено: 22.10.2012 17:10:25
lillgrinn
Хорошо. Спасибо.
А в OnClick никак не получится? Мне важно чтобы был именно клик (нажал-отпустил) в пределах заданной области.

Re: Цвет точки под кусором мышки

СообщениеДобавлено: 22.10.2012 20:00:09
iskander
А что мешает в OnMouseDown запомнить координаты курсора, а в OnClick использовать?

Re: Цвет точки под кусором мышки

СообщениеДобавлено: 23.10.2012 09:34:59
lillgrinn
iskander писал(а):А что мешает в OnMouseDown запомнить координаты курсора, а в OnClick использовать?

Ну, не хотелось бы лишний раз глобальные переменные вводить. Или можно как-то иначе?

Re: Цвет точки под кусором мышки

СообщениеДобавлено: 23.10.2012 09:47:11
Brainenjii
может Вас устроит тупо обрабатывать OnMouseUp? Со стороны будет очень похоже на клик.
По вопросу - не обязательно сохранять положение в глобальной переменной - вполне можете завести для этого приватное поле формы. Все-равно работа с гуем работает в один поток, так что о синхронизации доступа можно не беспокоиться.
Ну и можете использовать объект Mouse, чтобы получать координаты курсора в OnClick, но с ними придётся провести некоторые действия, чтобы определить положение
Код: Выделить всё
Procedure TForm1.FormClick(Sender: TObject);
Begin
  Caption := Format('Global(%d, %d); Form(%d, %d);',
    [Mouse.CursorPos.X, Mouse.CursorPos.Y,
    Mouse.CursorPos.X - Left, Mouse.CursorPos.Y - Top]);
end;               

Re: Цвет точки под кусором мышки

СообщениеДобавлено: 23.10.2012 19:14:04
lillgrinn
Спасибо всем!