Я использую Windows, работаю с SFML на C++, и когда я увеличиваю или уменьшаю масштаб, он не щелкает ячейку под мышью.C++

Программы на C++. Форум разработчиков
Anonymous
Я использую Windows, работаю с SFML на C++, и когда я увеличиваю или уменьшаю масштаб, он не щелкает ячейку под мышью.

Сообщение Anonymous »

Это игра в жизнь с сеткой квадратов. Я сделал так, чтобы мы могли рисовать на сетке, щелкнув ячейку (щелкнув левой кнопкой мыши). Также (с видом) вы можете перемещаться из стороны в сторону, щелкая правой кнопкой мыши, и увеличивать и уменьшать масштаб. Я нашел, как решить проблему с положением при скольжении, изменив координаты мыши на разницу расстояний, но не могу найти, как решить эту проблему для прокрутки.
Система скольжения и масштабирования сама по себе работает отлично. хотя. Неправильно только положение под курсором мыши.
Я пытался сделать то же самое для скольжения, но у нас нет разницы в расстоянии, с которой можно было бы работать. Сначала я думал, что мне не нужно вносить изменения в координаты, а просто конвертировать их в режиме экрана или просмотра, но это не работает.
И я много чего искал и пробовал, но так и не нашел, как это сделать. сделайте это.
case sf::Event::MouseWheelMoved:
movingView.zoom(1.f + event.mouseWheel.delta * 0.1f);

mouse = sf::Mouse::getPosition(window);
viewMouse = window.mapPixelToCoords(mouse);

if (event.mouseButton.button == sf::Mouse::Right)
{
lastMouse = mouse;
center += moveDiff;
rightClickPressed = true;
}

if (rightClickPressed)
{
moveDiff = (sf::Vector2f)(lastMouse - mouse);
movingView.setCenter(sf::Vector2f(center + moveDiff));
}
if (leftClickPressed)
{
viewMouse += movingView.getCenter() - movingView.getSize() / 2.f;
gameOfLife.clickCell(viewMouse, E_pressed);
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... -it-doesnt

Вернуться в «C++»