• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tworzenie screenshotów

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
+1 głos
297 wizyt
pytanie zadane 8 września 2017 w C i C++ przez fipooo Bywalec (2,880 p.)
Potrzebuję programu do tworzenia screenshotów. A raczej chciałbym taki napisać. Z tego co wiem jest to możliwe w c++. Jeżeli mógłby ktoś odesłać do pomocnego linku będę wdzięczny.

2 odpowiedzi

+2 głosów
odpowiedź 8 września 2017 przez QizmoPL Stary wyjadacz (11,440 p.)
wybrane 8 września 2017 przez fipooo
komentarz 8 września 2017 przez QizmoPL Stary wyjadacz (11,440 p.)
tylko licz sie z tym, ze to nie bedzie przenosne
0 głosów
odpowiedź 8 września 2017 przez Milesq Nałogowiec (31,550 p.)
W sfml jest to możliwe

tworzysz obiekt klasy sf::Image

i on ma funkcję capture

http://cpp0x.pl/kursy/Kurs-SFML-1-6-C++/Wczytywanie-i-zapisywanie-plikow-graficznych/332
komentarz 8 września 2017 przez fipooo Bywalec (2,880 p.)
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).
komentarz 8 września 2017 przez Knayder Nałogowiec (37,680 p.)
Jeezu, przecież to jest SFML 1.6.

Obecnie mamy 2.4.2 i już tego nie ma.
1
komentarz 8 września 2017 przez Milesq Nałogowiec (31,550 p.)
ta funkcja daje Ci możliwość stworzenia obiektu klasy image  z aktualnym stanem ekranu potem możesz na tym działać jak na zwykłym obrazie zapisanie go do pliku to tylko jedna możliwość

polecam dokumentację :)

https://www.sfml-dev.org/documentation/2.4.2/classsf_1_1Image.php

klasa image
komentarz 8 września 2017 przez niezalogowany

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

Podobne pytania

0 głosów
1 odpowiedź 102 wizyt
pytanie zadane 5 grudnia 2018 w Systemy operacyjne, programy przez Musa_dagh Nowicjusz (150 p.)

90,900 zapytań

139,572 odpowiedzi

313,905 komentarzy

60,373 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...