Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
2 / 1 / 1
Регистрация: 16.05.2018
Сообщений: 31

Как проверить наличие курсора мышки в определённой области окна (SFML)?

31.01.2020, 17:21. Показов 4397. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть прямоугольник (rectangle), и нужно отследить нажатие мышки именно в области этого прямоугольника. Уже, наверное, всё перепробовал, но ничто не помогает. Вот код для наглядности.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <SFML/Graphics.hpp>
 
int main() {
 
  sf::RenderWindow window(sf::VideoMode(1280, 720), "SFML");
 
  window.setFramerateLimit(60);
 
  sf::RectangleShape rectangle;        //собственно сам прямоугольник
  rectangle.setSize(sf::Vector2f(400.f, 25.f));
  rectangle.setOutlineThickness(2.5f);
  rectangle.setOutlineColor(sf::Color::White);
  rectangle.setPosition(sf::Vector2f(320.f, 200.f));
 
  while (window.isOpen()) {
    
    sf::Event event;
 
    while (window.pollEvent(event)) {
 
      if (event.type == sf::Event::Closed)
        window.close();
      
      if (event.type == sf::Event::MouseButtonPressed) {
        if (rectangle.getGlobalBounds().contains(sf::Mouse::getPosition().x, sf::Mouse::getPosition().y)) {
          rectangle.setOutlineColor(sf::Color::Red);  //если нажатие произошло в области прямоугольника, 
        }                                                                         //то изменить цвет границы
      }
    }
    window.clear(sf::Color::Black);
 
    window.draw(rectangle);
    
    window.display();
  }
  return 0;
}
Заранее спасибо за помощь
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2020, 17:21
Ответы с готовыми решениями:

Как в SFML по клику мыши на определенной области (например на спрайте) выполнить какое либо действие?
Только начал изучать SFML. Скажите пожалуйста, как в SFML по клику мыши на определенной области (например на спрайте) выполнить какое либо...

Как проверить наличие определенной строки в listbox
Не подскажите, есть переменная типа string и листбокс с кучей заполненных строк, как проверить есть ли такая строка в листбоксе и если нет,...

Как проверить WebBrowser на наличие определённой ссылки
Как проверить WebBrowser на наличие определённой ссылки? Ну чтобы если WebBrowser на site.com, то ... дествие то-то-то... Заранее...

2
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
31.01.2020, 17:51
Цитата Сообщение от SourLemon Посмотреть сообщение
rectangle.getGlobalBounds().contains(sf: :Mouse::getPosition().x, sf::Mouse::getPosition().y)
C++
1
rectangle.getGlobalBounds().contains(window.mapPixelToCoords(sf::Mouse::getPosition(window)))
Добавлено через 10 минут
или так
C++
1
rectangle.getGlobalBounds().contains(window.mapPixelToCoords({ event.mouseButton.x, event.mouseButton.y }))
1
2 / 1 / 1
Регистрация: 16.05.2018
Сообщений: 31
31.01.2020, 17:51  [ТС]
Спасибо, уже сам разобрался)) Дошёл до крайности - стал перечитывать документацию и чуть ли не в самой первой строчке нашёл ответ)).
Только я просто добавил window в качестве аргумента:
C++
1
rectangle.getGlobalBounds().contains(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.01.2020, 17:51
Помогаю со студенческими работами здесь

Запрет движения курсора в определённой области
Добрый день. Задача такова - в центре формы есть control (допустим Rectangle), как можно сделать так, что-бы курсор не заходил в...

Windows XP загружается только до черного окна и курсора мышки
Windows XP загружается только до черного окна и курсора мышки.. В безопасном режиме также.. как поступить?

Проверить наличие в списке определенной строки
Добрый день! Помогите разобраться, есть строка string z=&quot;1;2;3;4;5&quot;; Далее я её преобразовываю в массив string new_z=...

Проверить наличие файла в каталоге, с определенной периодичностью, и установить в виду отсутствия
Доброго времени всем... Есть файл в одной папке на диске &quot;D&quot;. Мне нужно реализовать такую возможность, что бы каким то способом...

Координаты курсора мыши относительно клиентской области окна
Здравствуйте! Подскажите пожалуйста как можно узнать координаты курсора мыши клиенской области окна! Знаю и юзал функциию ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru