Перейти к содержанию
Fire Monkey от А до Я
  • 0

Найти положение центра пальца в OnMouseDown


Андрей Рулин

Вопрос

С помощью старших товарищей на этом форуме я научился отображать прямоугольники.  Вот код, который мне подсказали.

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin
  FCrd := PointF(X,Y);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Single);
begin
  Invalidate;
end;

procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  Canvas.Fill.Color := TAlphaColorRec.Wheat;
  Canvas.FillRect(rectf(FCrd.X, FCrd.Y, FCrd.X+100, FCrd.Y+100), 0,0,[], 1);
end;

Так вот в Windows , если нажать курсор, то как мы и ожидаем, левый верхний угол прямоугольника будет установлен именно туда , куда мы нажали. В Andoroid же левый верхний угол устанавливается где-то по левой верхней части пальца. А ожидается, что он будет установлен в центр пальца.  В связи с этим вопросы.

1) X,Y -это координаты центра пальца или левой верхней его части?

2) Как получить координаты именно куда нажал центр пальца? Ведь я не знаю ни размера устройства ни размера пальца, поэтому просто прибавлять к X,Y какое-то значение, это такое себе.. 

В справке удалось нарыть только это - http://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Controls.TControl.MouseDown  . Так никак не описывается поведение на планшетах. 

 

 

 

20200723_173738.jpg

Изменено пользователем Андрей Рулин
+картинка
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Давайте определим а точно это "палец" был, а не хм... ченить другое?
левый верхний угол пальца - маинкрафтер?
по делу - откалибруйте сенсор...

Изменено пользователем Slym
Ссылка на комментарий
  • 0

да ну полноте ж)))  я всегда включаю отображение касания и вижу прям кружок, куда касаюсь

и система дает координаты центра этого кружка, так что не загоняйтесь с софтом, это хард

Ссылка на комментарий
  • 0

krapotkin   - может вы и правы.  Потестирую на других устройствах пока тестировал на Samsung A71. Вот ещё что есть интересного. Я протестировал в режиме портретном, там угол экрана всё-таки ровно по центру пальца оказывается.  А в ланшафтном - увы.

Slym - я пробовал нажимать стандартные иконки. Там именно реакция на нажатие именно по центру пальца. Что в портретном режиме, что в ландшафтном. 

---

UPD   - на планшете Galaxy Tab 8a  всё работает, левый верхний угол именно по центру. 

UPD2 - на Galaxy A6+ тоже работает. 

UPD3 - на A71 фронтальная камера расположена прямо на экране. При клике на фронтальную камеру ничего не происходит.  При клике сверху или снизу камеры(если держать в ландшафтной ориентации)  тоже никакой реакции.  Если кликнуть чуть правее камеры, то левая часть прямоугольника устанавливается ровно слева от экрана. То есть сдвиг идёт ровно на ширину этой фронтальной камеры. 

Изменено пользователем Андрей Рулин
дополнение
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...