[C#] DirectX Screenshot/Snapshot

Andylein

Grünschnabel
Hallo Leute,

Vorab:
Ich bin ein Newbie in der Programmierung und entschuldige vorab "dumme" Fragen. :-(

Mein Anliegen:
Ich bastle mir gerade ein Programm, welches auf Knopfdruck (und später autom. im Intervall) einen Screenshot vom (gesamten) Desktop macht und diesen in eine jpg, bmp, png,... konvertiert.

Dies funktioniert mit folgendem Script ganz gut:
http://www.developerfusion.com/code/4630/capture-a-screen-shot/

Dazu in meinem C#-Project:
Code:
        private void button2_Click(object sender, EventArgs e)
        {
            Screenshot screen = new Screenshot();
            screen.CaptureScreenToFile(@"C:\lol\screen.jpg", ImageFormat.Jpeg);
        }

Problem:
Dieses Script funktioniert aber in grafischen Vollbild-Anwendungen, die unter DirectX laufen, nicht mehr. Im Klartext: In Spielen gehts nicht! ;)
Und genau da liegt das Problem.

Über Freund und Helfer google.de weiß ich, dass ein DirectX-Screenshot dem Problem Abhilfe schaffen würde.
Also habe ich mir die aktuelle DirectX SDK runtergeladen und in meinem C#-Projekt entsprechende Verveise gesetzt.

MSDN stellt mir dann noch passenden Code zur Verfügung:
Code:
using Microsoft.DirectX.Direct3D;

        public void takeScreenshot()
        {
            Surface backbuffer = device.GetBackBuffer(0, 0, BackBufferType.Mono);
            SurfaceLoader.Save("Screenshot.bmp", ImageFileFormat.Bmp, backbuffer);
            backbuffer.Dispose();
        }

Füge ich dies in mein Projekt ein, so sagt mir C# "Der Name "device" ist im aktuellen Kontext nicht vorhanden.".

Also weitergegoogelt und rausgefunden, dass ich ein Device anlegen muss und ab da setzen meine Fähigkeiten aus:
Code:
Device device = new Device();
Er verlangt von mir Argumente aber ich habe absolut keine Ahnung was ich da angeben soll.
Alles was ich bisher bei google und eben in entsprechenden Foren gefunden habe, hat mir nichts genützt weil es a) einfach nicht ging oder b) ich es einfach nicht verstanden habe. Ich glaube aber eher letzteres.

Daher meine Frage an euch:
Weiß jemand wie ich das lösen könnte? Gibt es vielleicht eine andere Methode einen DirectX-Screenshot zu zaubern?

Bin für jeden Vorschlag dankbar!

mfg.
Andylein
 
Zurück