W SFML 2.4.2 capture jest oznaczony jako depreceated. Nie powinno go się stosować, bo jak napisano w dokumentacji:
This is a slow operation, whose main purpose is to make screenshots of the application. If you want to update an image with the contents of the window and then use it for drawing, you should rather use a sf::Texture and its update(Window&) function. You can also draw things directly to a texture with the sf::RenderTexture class.
Raczej powinno robić się to tak link i kod:
#include <SFML/Graphics.hpp> #include <thread> int main() { sf::RenderWindow window({ 800, 600 }, "Screenshot!"); sf::Texture tex; tex.create(800, 600); while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { if (event.type == sf::Event::Closed) window.close(); if (event.type == sf::Event::KeyPressed) { tex.update(window); sf::Image img = tex.copyToImage(); std::thread t([img]() { img.saveToFile("test.png"); }); t.detach(); } } window.clear(sf::Color(0xFF0000FF)); window.display(); } }
A czy jest możliwość dokładnego wyznaczenia wielkości screena i miejsca na ekranie? Czyli np. 200x200 i w przekątna od (x,y) do (x,y).
Wszystko jest wiadome. Wystarczy użyć odpowiedniej funkcji
90,900 zapytań
139,572 odpowiedzi
313,905 komentarzy
60,373 pasjonatów
Motyw:
Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡
Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.