当我在程序中输入数字“1”时,试图删除正方形。我如何删除它?如何删除SFML中的对象
sf::RectangleShape rec1(sf::Vector2f(50, 100));
rec1.setPosition(200, 700);
rec1.setFillColor(sf::Color(100, 250, 50));
window.draw(rec1);
int num;
cout << "Please enter a number: ";
cin >> num;
当我在程序中输入数字“1”时,试图删除正方形。我如何删除它?如何删除SFML中的对象
sf::RectangleShape rec1(sf::Vector2f(50, 100));
rec1.setPosition(200, 700);
rec1.setFillColor(sf::Color(100, 250, 50));
window.draw(rec1);
int num;
cout << "Please enter a number: ";
cin >> num;
SFML本身不会跟踪什么绘制在屏幕上 - 你必须做你自己的 - 你应该在需要时重新绘制窗口内容。
一个基本的“主循环”为基础SFML程序通常是这样的:
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
// Handle events here
}
// Update your program logic here
window.clear();
// Draw your stuff here
window.display();
}
根据你画什么,你确定什么是显示在屏幕上。所以如果你想让你的矩形不再出现,只需不再叫window.draw(rectangle);
。你如何实现这一点 - 例如通过从绘制时迭代的std::vector<sf::Drawable*>
中删除矩形 - 取决于您。
当你像这样创建它时,你不能删除它。您可以使用sf::Color::Transparent
将它变为透明,并且它将变得无法看见。
如果你想删除它。你必须先把它作为指针。或者将它从一个处理它的类中包装出来。
auto rect = make_unique<sf::Rectangle>(sf::Vector2f(50, 100));
然后使用std :: unique_ptr :: reset()将其删除。
rect.reset();