Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420

Установка курсора на Image программно

30.03.2018, 22:05. Показов 2596. Ответов 4

Студворк — интернет-сервис помощи студентам
Есть компонент Image1, в котором отображена картинка.
Нужно программно установить курсор мышки в определённое место Image1.

Функция SetCursorPos(x, y) не подходит, т.к. координаты экранные, а если вычислять
C++
1
2
int x = Form1->Left + Image1->Left;
int y = Form1->Top + Image1->Top;
будет неточно из-за бордюров и заголовка формы.

Функция mouse_event() аналогична.

Пытался через запуск Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y), но не получается, хотя вариант самый подходящий, т.к. координаты относительно начала Image1:
C++
1
Image1MouseDown(0, mbLeft, TShiftState() << ssLeft, 200, 200);
Ошибок не выдаёт, но курсор не появляется.

А может всё зависит от обработчика, в котором эту строку записывать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2018, 22:05
Ответы с готовыми решениями:

Определение положения курсора на Image
Приветствую! Реализовывал на Delphi такую замечательную штуку: GetCursorPos(pt); pt := image1.ScreenToClient(pt); Будьте добры,...

как программно повернуть Image на определенный градус
как программно повернуть Image на определенный градус)

Как программно удалить image при нажатии на кнопку
как програмно удалить image при нажатии на кнопку помогите пожалуйста

4
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
30.03.2018, 22:43
C++
1
2
3
    TPoint pt = Mouse->CursorPos;
    pt = Image1->ScreenToClient(pt);
    Memo1->Lines->Add(String().sprintf(L"%d %d", pt.X, pt.Y));
Так вы узнаете координаты курсора на объекте. ...ну и дальше можно двигать.
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
30.03.2018, 23:15  [ТС]
Цитата Сообщение от Dinkin Посмотреть сообщение
TPoint pt = Mouse->CursorPos;
pt = Image1->ScreenToClient(pt);
Memo1->Lines->Add(String().sprintf(L"%d %d", pt.X, pt.Y));
Ну и зачем мне координаты курсора? Они известны.
Нужно программно установить курсор на Image1.

Что-то мне подсказывает, что надо колупать здесь:
C++
1
Image1MouseDown(0, mbLeft, TShiftState() << ssLeft, 200, 200);
Но курсор не появляется.

Добавлено через 21 минуту
Нет, я ошибся, Image1MouseDown(0, mbLeft, TShiftState() << ssLeft, 200, 200); не подходит, этот обработчик события по установленному курсору выдаёт координаты, а нужно наоборот, по известным координатам установить курсор.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
30.03.2018, 23:45
Лучший ответ Сообщение было отмечено Инженер_3 как решение

Решение

Цитата Сообщение от Инженер_3 Посмотреть сообщение
Ну и зачем мне координаты курсора?
А так не пробовали?__
C++
1
2
 
   Mouse->CursorPos = Image1->ClientToScreen(Point(44,44));
- устанавливает курсор в координаты 44,44 картинки.
1
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
30.03.2018, 23:56  [ТС]
nick42, Спасибо, всё сработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2018, 23:56
Помогаю со студенческими работами здесь

Настройки редактора билдера: установка курсора
Подскажите где настраивается каким образом будет установлен курсор (каретка) при клике мышкой в редакторе? Т.е. мне не нравится, что...

Показать координаты курсора на Image
Как сделать, чтобы при наведении мыши на Image в строке состояния показывалась координата точки?

Найти текущие координаты курсора не на PictureBox, а на его Image
вообще задача несколько иная мне нужно найти текущие координаты курсора не на самом picturebox а на его Image как известно он может...

Программно задать положение курсора
Как сделать так, что бы при выполнении функции начальное местоположение курсора было определенным? И возможно ли такое вообще?

Как программно изменить значок курсора
как программно изменить значок курсора в PascalABC.NET?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru