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

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

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

Сообщение lillgrinn » 22.10.2012 14:45:44

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

P.S.: Все это под Linux-ом.
lillgrinn
новенький
 
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28

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

Сообщение iskander » 22.10.2012 16:26:02

Код: Выделить всё
var
  MyColor: TColor;
  ...
  ...
procedure TMyForm.MyImageMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MyColor := MyImage.Canvas.Pixels[X, Y];
end;
:wink:
iskander
энтузиаст
 
Сообщения: 606
Зарегистрирован: 08.01.2012 18:43:34

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

Сообщение lillgrinn » 22.10.2012 17:10:25

Хорошо. Спасибо.
А в OnClick никак не получится? Мне важно чтобы был именно клик (нажал-отпустил) в пределах заданной области.
lillgrinn
новенький
 
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28

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

Сообщение iskander » 22.10.2012 20:00:09

А что мешает в OnMouseDown запомнить координаты курсора, а в OnClick использовать?
iskander
энтузиаст
 
Сообщения: 606
Зарегистрирован: 08.01.2012 18:43:34

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

Сообщение lillgrinn » 23.10.2012 09:34:59

iskander писал(а):А что мешает в OnMouseDown запомнить координаты курсора, а в OnClick использовать?

Ну, не хотелось бы лишний раз глобальные переменные вводить. Или можно как-то иначе?
lillgrinn
новенький
 
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28

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

Сообщение Brainenjii » 23.10.2012 09:47:11

может Вас устроит тупо обрабатывать 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;               
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

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

Сообщение lillgrinn » 23.10.2012 19:14:04

Спасибо всем!
lillgrinn
новенький
 
Сообщения: 17
Зарегистрирован: 12.10.2007 11:14:28


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

Рейтинг@Mail.ru