在定义的矩形内绘制可滚动的内容

C++ SFML Drawing scrollable content within a defined rectangle

本文关键字:滚动 绘制 定义      更新时间:2023-10-16

在定义的矩形内绘制可滚动内容时遇到问题。我想要实现的是能够在矩形内自由滚动内容,任何不在或部分被裁剪的内容。目前,我按可用项目的数量滚动,以确保没有任何东西被绘制在矩形之外。

查看SFML中可用的内容,似乎我应该能够使用sf::View实现此目标,但我的尝试不起作用。

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

然后我将视点设置为this,绘制我的项目,然后返回到默认视图。它似乎总是绘制到整个屏幕,而不是我在重置方法中设置的所需矩形?

我的理解是,这应该在x轴上创建220,y轴上85,宽815,高575的视口,但它在这个边界之外绘制。

任何想法?

进一步整理问题-似乎我只需要将我的位置设置为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);