область просмотра — C ++ SFML Рисование прокручиваемого содержимого в пределах определенного прямоугольника

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

Глядя на то, что доступно в SFML, кажется, что я смогу добиться этого с помощью sf :: View, но мои попытки не работают.

sf::View panelView;

panelView.reset(sf::FloatRect(220,85,815,575));
panelView.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));

Затем я устанавливаю точку обзора на это, рисую свои элементы и возвращаюсь к виду по умолчанию. Кажется, он всегда рисует на весь экран, хотя вместо желаемого прямоугольника, который я установил в методе Reset?

Насколько я понимаю, это должно создать область просмотра в 220 на оси x, 85 на оси y и иметь ширину 815 и высоту 575, но она выходит за пределы этих границ.

Есть идеи?

2

Решение

Разобрался с проблемой, изучив ее немного дальше — кажется, мне просто нужно установить мою позицию как фактор между 0,0f и 1,0f, где позиция в моем примере кода ниже, где я хочу разместить окно просмотра:

sf::FloatRect panelRect(position.left / SCREENWIDTH,
(position.top) / SCREENHEIGHT,
(position.width) / SCREENWIDTH,
(position.height) / SCREENHEIGHT);

panelView.reset(sf::FloatRect(position.left,position.top,position.width,position.height));
panelView.setViewport(panelRect);
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]