该代码不在SFML站点上的教程中.当我编译并运行它时,圆圈按比例缩放,因为窗口是由用户缩放的.我希望圆圈保持恒定的形状.
当屏幕重新调整大小时,正确的屏幕尺寸和正确的圆半径都会打印到控制台,但是圆圈被绘制到屏幕的方式绝对不是它声称的那样.圆圈在任何方面都没有视觉上的扭曲,但看起来好像是用一组不同的值来绘制,而不是打印到控制台的内容.
如果有帮助的话,antialiasingLevel对形状黎明没有任何影响.
#include <iostream>
#include <SFML/Graphics.hpp>
int main()
{
sf::ContextSettings settings;
settings.antialiasingLevel = 8;
sf::RenderWindow window(sf::VideoMode(200, 200), "Title", sf::Style::Default, settings);
sf::CircleShape shape(100);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
else if (event.type == sf::Event::Resized)
{
std::cout << "resize: (" << event.size.width << ',' << event.size.height << ") -> " << shape.getRadius() << std::endl;
}
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
解决方法:
调整大小的事件中添加的以下行将更正此问题.
window.setView(sf::View(sf::FloatRect(0, 0, event.size.width, event.size.height)));
问题似乎是视图不会自动缩放以适应新的分辨率.
标签:sfml,c 来源: https://codeday.me/bug/20190824/1712177.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。