當我在程序中輸入數字「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();