-5 / 0 / 1
Регистрация: 13.03.2014
Сообщений: 139
|
|
1 | |
Определение Timage под мышью25.09.2019, 15:05. Показов 1969. Ответов 12
Метки нет (Все метки)
Есть область, на которой находятся несколько TIMAGE. Каждый TIMAGE имеет рисунок и прозрачную область. При клике мышкой, нужно определить по какой области, где есть рисунок, мы попали. Как это лучше реализовать?
0
|
25.09.2019, 15:05 | |
Ответы с готовыми решениями:
12
Компонент TImage ведет себя по разному под 98 и 2000! Мерцание компонента Timage и перемещение Timage при нажатии Определение полигона под мышью Перемещение Timage мышью |
-5 / 0 / 1
Регистрация: 13.03.2014
Сообщений: 139
|
|||||||||||
25.09.2019, 15:29 [ТС] | 2 | ||||||||||
Вижу тут два шага к решению:
1) На OnMouseDown Определяем какие компоненты TIMAGE находятся под мышью Что то вроде
0
|
25.09.2019, 15:45 | 3 |
так... У вас FMX. Вы используете компоненты TImage. Откуда и как в них появляются изображения, в каком формате? И что такое
TFrame2_maps ?Добавлено через 2 минуты И если что есть такая функция - PtInRect() ...
0
|
-5 / 0 / 1
Регистрация: 13.03.2014
Сообщений: 139
|
|||||||||||
25.09.2019, 16:13 [ТС] | 4 | ||||||||||
GoodWeather,
Спасибо за наводку. Поставил так.
2) наши координаты должны быть абсолютными? 3) Как определить прозрачность TIMAGE в этой точке? Добавлено через 15 минут
Сlienttoscreen - не катируется
0
|
26.09.2019, 09:29 | 5 | |||||
вернемся еще раз к теме определения прозрачности пиксела в TBitmap
идем в исходники и находим вот такое например
вам остается только использовать
0
|
-5 / 0 / 1
Регистрация: 13.03.2014
Сообщений: 139
|
||||||||||||||||
26.09.2019, 16:08 [ТС] | 6 | |||||||||||||||
krapotkin,
вопрос: откуда приходит const Color: TAlphaColor и чему она должна быть равна и что за А?
0
|
27.09.2019, 10:58 | 7 |
это тип - PAlphaColorArray = ^TAlphaColorArray
запись PAlphaColorArray(M.Data) - это приведение типа указателя m.Data - компилятор будет считать что M.Data это PAlphaColorArray @ - это взятие указателя, т.е. получаем что C = указатель на элемент массива TAlphaColorArray с индексом J * (M.Pitch div 4) + I C^ - сам элемент этого массива C^.A соответственно - это байт-прозрачность. $ff - совсем непрозрачная точка, $00 - совсем прозрачная Добавлено через 1 минуту кстати, насколько я помню ^ можно не писать C^.A должно быть одинаково с C.A
0
|
-5 / 0 / 1
Регистрация: 13.03.2014
Сообщений: 139
|
||||||
27.09.2019, 11:47 [ТС] | 8 | |||||
krapotkin,
Хорошо. Услышал. Для проверки сделал следующий код: кликаем. Смотрит куда пришлось. и показываем цвет.
Все что не синее - прозрачное. Как В чем нюанс?!
0
|
-5 / 0 / 1
Регистрация: 13.03.2014
Сообщений: 139
|
|
27.09.2019, 11:53 [ТС] | 9 |
Поправка *Null
0
|
-5 / 0 / 1
Регистрация: 13.03.2014
Сообщений: 139
|
|
27.09.2019, 12:53 [ТС] | 11 |
krapotkin,
Не вижу разницы в коде у себя и у Вас. Поясните. Взял ваш проект - работает отлично. Вставил свою картинку- дает неверный цвет.
0
|
-5 / 0 / 1
Регистрация: 13.03.2014
Сообщений: 139
|
|
27.09.2019, 12:54 [ТС] | 12 |
Отдельно прикладываю регион.
Возможно проблема в картинке?
0
|
27.09.2019, 13:28 | 13 |
вообще TImage не целиком состоит из битмапа
есть еще неотображаемая часть предположу, что при клике на битмап мы получаем нормальные результаты а когда попадаем мимо - любые это косвенно подтвверждается, если покликать на мою программу так что нужно еще проверять попали XY в Bitmap.Width,Height или нет а я вижу ) как минимум MAP требует прибирать за собой и писать Unmap кроме того, ну вставьте свою картинку в мой код, да смотрите
0
|
27.09.2019, 13:28 | |
27.09.2019, 13:28 | |
Помогаю со студенческими работами здесь
13
Определение момента пересечения изображения мышью (прозрачность) Определение локальных координат указателя мыши на изображении компонента TImage Выполнить определение цвета пикселя при вождении мышкой по компоненту TImage Определить фигуру под мышью Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |