gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:31 27 4
gpt4 key购买 nike

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

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

sf::View panelView;

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

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

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

有什么想法吗?

最佳答案

进一步解决问题 - 似乎我只需要将我的位置设置为 0.0f 和 1.0f 之间的一个因子,下面示例代码中的位置就是我希望视口(viewport)定位的位置:

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);

关于C++ SFML 在定义的矩形内绘制可滚动内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091616/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com