На форме имется TImage. В него загружен рисунок. На рисунке имеется область закрашенная одним цветом.
Делаем клик мышкой на этой области или проводим мышкой по этой области.
Как получить цвет под указателем мышки?
P.S.: Все это под Linux-ом.
Цвет точки под кусором мышки
Модератор: Модераторы
Код: Выделить всё
var
MyColor: TColor;
...
...
procedure TMyForm.MyImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
MyColor := MyImage.Canvas.Pixels[X, Y];
end;
Хорошо. Спасибо.
А в OnClick никак не получится? Мне важно чтобы был именно клик (нажал-отпустил) в пределах заданной области.
А в OnClick никак не получится? Мне важно чтобы был именно клик (нажал-отпустил) в пределах заданной области.
А что мешает в OnMouseDown запомнить координаты курсора, а в OnClick использовать?
iskander писал(а):А что мешает в OnMouseDown запомнить координаты курсора, а в OnClick использовать?
Ну, не хотелось бы лишний раз глобальные переменные вводить. Или можно как-то иначе?
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
может Вас устроит тупо обрабатывать OnMouseUp? Со стороны будет очень похоже на клик.
По вопросу - не обязательно сохранять положение в глобальной переменной - вполне можете завести для этого приватное поле формы. Все-равно работа с гуем работает в один поток, так что о синхронизации доступа можно не беспокоиться.
Ну и можете использовать объект Mouse, чтобы получать координаты курсора в OnClick, но с ними придётся провести некоторые действия, чтобы определить положение
По вопросу - не обязательно сохранять положение в глобальной переменной - вполне можете завести для этого приватное поле формы. Все-равно работа с гуем работает в один поток, так что о синхронизации доступа можно не беспокоиться.
Ну и можете использовать объект 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;
Спасибо всем!
