Odfotenie okna hry v XNA

C# .NET XNA game studio Zdrojákoviště Odfotenie okna hry v XNA

Jednoduchý program v ktorom ukazujem ako jednoducho odfotiť okno hry. V archive na konci článku je priložený aj zdrojový kód. Obrázok sa uloží do priečinku s hrou.

Ovládanie postavy - šípkami. (Je to tam len preto aby ste videli že okno sa fakt odfotí) Obrazovku odfotíte tlačítkom S.

Zdrojový kód metody ktorá to robí:

public void CaptureScreenshot()
{
           //Nadstavenie targetu - tam kde má graphics device vykresľovať, pokiaľ null tak vykresľuje na obrazovku
           GraphicsDevice.SetRenderTarget(target);
           GraphicsDevice.Clear(Color.LightBlue);

           //Všetko čo chcete odfotiť musíte znova vykresliť
           DrawScene();

           GraphicsDevice.SetRenderTarget(null);

           //Vytvorenie streamu
           Stream stream = File.Open("Screenshot.png", FileMode.OpenOrCreate);

           //Uloženie
           target.SaveAsPng(stream, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight);

           stream.Flush();
           stream.Close();
}

Galerie

Hra byla vytvořena v roce 2013.

 

Stáhnout

Staženo 140x (95.69 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

  Aktivity (1)

Hru pro vás napsal Juraj Mlich
Avatar
Autor sa už malička venuje počítačom, konkrétnejšie hraním hier, skúmaním rôznych problémov / programova a prvorade programovaniu.

Jak se ti líbí článek?
Celkem (1 hlasů) :
333 33


 


Miniatura
Všechny články v sekci
Zdrojákoviště C# .NET - XNA a MonoGame

 

 

Komentáře

Avatar
Michal Žůrek (misaz):

Upřímně bych takovýto článek zamítl. Kvůli 10ti řádků kódu se totiž musí stahvat celý soubor, který navíc nejde ani normálně otevřít a kód procházíte v notepadu...

Není jednoduší do článku vložit
/code--

public void CaptureScreenshot()
{
    //Nadstavenie targetu - tam kde má graphics device vykresľovať, pokiaľ null tak vykresľuje na obrazovku
    GraphicsDevice.SetRenderTarget(target);
    GraphicsDevice.Clear(Color.LightBlue);

    //Všetko čo chcete odfotiť musíte znova vykresliť
    DrawScene();

    GraphicsDevice.SetRenderTarget(null);

    //Vytvorenie streamu
    Stream stream = File.Open("Screenshot.png", FileMode.OpenOrCreate);

    //Uloženie
    target.SaveAsPng(stream, graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight);

    stream.Flush();
    stream.Close();
}
Odpovědět  +1 3.8.2013 11:09
Nesnáším {}, proto se jim vyhýbám.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Michal Žůrek (misaz)
David Čápka:

On to není článek, ale program :) Psát článek na jednu metodu asi nemá úplně smysl.

Odpovědět  +1 3.8.2013 11:18
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Michal Žůrek (misaz):

jo, ale proč by nemohl popsat i program?

// za těch 10 minut co jsem se s tím piplal, jsem byl značně znechucený.

Odpovědět  ±0 3.8.2013 11:20
Nesnáším {}, proto se jim vyhýbám.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Také nemá smysl balit do RARu tunu balastu a ještě to zabalit blbě. Program jsem našel v souboru

/Zdrojové kódy/Screenshot/Screenshot/Main.cs

Než jsem se k tomu dohrabal... Však se sem nemusí posílat celý projekt, stačí jen příslušný program.

K čemu tady máme dev-lighter? Pro jednu metodu nebo spíš třídu ideální.

Odpovědět  -1 3.8.2013 12:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Juraj Mlich
Redaktor
Avatar
Juraj Mlich:

Tak ten kód ktorý to robí pridám rovno tu :) Je to len ukážka ako to funguje. Tie zdrojové kódy sú tak ako mi to vygenerovalo VS (myslím umiestnenie).

Editováno 3.8.2013 13:12
Odpovědět 3.8.2013 13:11
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.