我试图在窗口上显示sf :: Text,但它不起作用,我也不明白为什么!
这是代码示例: 构造函数
timerText.setFont(getFont());
timerText.setString("test");
timerText.setCharacterSize(70);
timerText.setColor(Color::Red);
getFont():
Font& Timer::getFont(){
Font font;
if(!font.loadFromFile("arial.ttf")){
cout << "font not loaded" << endl;
}
return font;
}
draw():
timerText.setPosition(Vector2f(center.x - 8, center.y - size.y/2 + 12));
window.draw(timerText);
我所有其他绘制都工作正常,并且在加载字体时我没有出错。 对不起,我的英语,谢谢您的帮助!
答案 0 :(得分:0)
通过在类中添加私有变量sf :: Font并通过交换来解决 setFont(getFont()); 通过 font.loadFromFile(fontFile); setFont(font);
我仍然不明白我的错误,但是现在可以了。
答案 1 :(得分:0)
在getFont()
,将字体加载到堆栈存储器中的局部变量中。该函数返回时,它会自动删除。
您应该将其移动或分配到其他位置。
Font font;
Font& Timer::getFont(){
if(!font.loadFromFile("arial.ttf")){
cout << "font not loaded" << endl;
}
return font;
}