tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
486
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Barzille Barzille ist offline Mitglied
    Registriert seit
    Jan 2005
    Beiträge
    17
    Moin,
    ich habe ein Problem mit dem Screenshotcode von http://www.developerfusion.co.uk/show/4630/, der hier schon in einem anderen Thread erwähnt wurde. Ich kann ohne Probleme Screenshots von allen möglichen Fenstern erstellen, nur hapert es beim Screenshot von einem Computerspiel, das im Fenstermodus läuft. Der erste Shot klappt noch, danach bekomme ich aber bei jedem weiteren Versuch immer wieder das gleiche alte Bild. Erst wenn ich im Spiel von Fenster auf Vollbildmodus und zurück schalte, erhalte ich ein neues Bild. Mein Code sieht vereinfacht so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    [SIZE=2][COLOR=#2b91af]ScreenCapture[/COLOR][/SIZE][SIZE=2] sc = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]ScreenCapture[/COLOR][/SIZE][SIZE=2]();[/SIZE]
    [SIZE=2]...[/SIZE]
    [SIZE=2]#Buttonevent[/SIZE]
    [SIZE=2][COLOR=#0000ff]while[/COLOR][/SIZE][SIZE=2] ([/SIZE][SIZE=2][COLOR=#0000ff]this[/COLOR][/SIZE][SIZE=2].Handle == [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]IntPtr[/COLOR][/SIZE][SIZE=2](GetForegroundWindow()))[/SIZE]
    [SIZE=2]{[/SIZE]
    [SIZE=2][COLOR=#2b91af]Thread[/COLOR][/SIZE][SIZE=2].Sleep(500);[/SIZE]
    [SIZE=2]} [/SIZE]
    [SIZE=2][COLOR=#2b91af]IntPtr[/COLOR][/SIZE][SIZE=2] handle = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]IntPtr[/COLOR][/SIZE][SIZE=2](GetForegroundWindow());[/SIZE]
    [SIZE=2]Screenshot = sc.CaptureWindow(handle); [/SIZE]
    [SIZE=2][SIZE=2]bm = [/SIZE][SIZE=2][COLOR=#0000ff]new[/COLOR][/SIZE][SIZE=2][COLOR=#2b91af]Bitmap[/COLOR][/SIZE][SIZE=2](Screenshot);[/SIZE]
    [SIZE=2]graph = [/SIZE][SIZE=2][COLOR=#2b91af]Graphics[/COLOR][/SIZE][SIZE=2].FromImage(bm); //benötigt, um auf dem Bild zu zeichnen[/SIZE]
     
    [SIZE=2]AnalyseBild.Image = bm;[/SIZE]
    [SIZE=2]AnalyseBild.Size = bm.Size;[/SIZE]
    [SIZE=2]#Ende Buttonevent[/SIZE]
    [/SIZE]

    Gibt es bei OpenGL Fenstern ein bestimmtes Kommando zum Refresh oder ein ähnliches Vorgehen?

    Gruß Maik
     

  2. #2
    Barzille Barzille ist offline Mitglied
    Registriert seit
    Jan 2005
    Beiträge
    17
    So, ich habe mittlerweile rausbekommen, dass ich screenshots von direct3D Fenstern anders machen muss, und zwar folgendermaßen:

    PHP-Code:
    Surface backbuffer device.GetBackBuffer(00BackBufferType.Mono);
    SurfaceLoader.Save("Screenshot.bmp"ImageFileFormat.Bmpbackbuffer);
    backbuffer.Dispose(); 
    Mein Problem liegt aber nun darin, dass ich nicht weiß, wie ich vom Handle (IntPtr) des Direct3D Fensters zum device komme. Hat da jemand Rat für mich?
     

Ähnliche Themen

  1. Screenshots und Windows 7 mit DirectX
    Von Afritus im Forum .NET Grafik und Sound
    Antworten: 18
    Letzter Beitrag: 31.03.10, 08:09
  2. Screenshots mit windows ce 3.0
    Von mamut77 im Forum Microsoft Windows
    Antworten: 1
    Letzter Beitrag: 07.07.09, 17:30
  3. Aktualisierte Version der SQL Server 2005 Books
    Von Norbert Eder im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 25.04.06, 15:15
  4. Laufend aktualisierte GUI-Ausgabe statt Konsole
    Von Joghurt im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 12
    Letzter Beitrag: 23.11.04, 23:23
  5. Works 2000-ist aktualisierte DBabfrage möglich?
    Von Bananendampfer im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 16.11.04, 14:07