【发布时间】:2016-03-31 17:14:31
【问题描述】:
我最近一直在测试 SFML 2.3 中的一些功能,并且我已经开始熟悉 C++。
玩了一圈之后,我决定尝试在程序中添加文本,使用sf::Text 和sf::Font。
这样做后,我在运行程序时遇到了问题,即使使用它的教程也是如此。
我已经尝试调试它,但没有看到任何问题,但是在运行时,关于它绘制“文本”的点,出现一个对话框,说“text.exe 已停止工作”
我正在运行 Windows 10 10586,并且我正在使用 VS2012 Professional。
我有下面的代码,目前为止。
#include <iostream>
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(800,600),"Text Test");
sf::Text text;
sf::Font font;
std::cout << "Created the Window." << std::endl;
std::cout << "Loaded Text and Font classes" << std::endl;
while (window.isOpen())
{
sf::Event event;
std::cout << "Created window Function loop" << std::endl;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
if (!font.loadFromFile("arial.ttf"))
{
std::cout << "Program Halted." << std::endl;
std::exit(-1);
}
std::cout << "Loaded Fonts." << std::endl;
text.setFont(font);
text.setString("I am a Test");
text.setCharacterSize(20);
window.clear();
window.draw(text);
window.display();
}
return 0;
}
【问题讨论】:
-
最好将加载字体和初始化
sf::Text对象的代码移出主处理循环。这应该每秒执行很多次。 -
@Henry 与其在标题中添加
(Solved),不如接受您最喜欢的答案。这就是我们在这里的做法。 -
我听说过,但因为我得到的答案基本相同,我不能说一个比另一个好。所以我宁愿告诉人们它已经“解决了”,而不是得到更多的答案,或者让它变得更复杂,或者成为一个重复的答案。
-
@HenrySouthall 因为答案基本相同,所以我撤回了我的答案,让您的选择更容易:)