El código que se ha vinculado a (de spazzarama), que le dijo que estaba utilizando en su proyecto, captura el búfer frontal de su dispositivo DirectX. ¿Has intentado capturar el búfer posterior en su lugar? Yendo desde el código en su sitio vinculado, cambiaría la línea 90 desde
dispositivo.GetFrontBufferData (0, superficie);
a
backbuffer superficie = device.GetBackBuffer (0, 0, BackBufferType.Mono); SurfaceLoader.Save ("Screenshot.bmp", ImageFileFormat.Bmp, backbuffer);
Esto también implicaría eliminar las líneas 96-98 en su ejemplo vinculado. El backbuffer podría generarse sin la ventana obstructiva.
EDITAR
importa todo eso. Me acabo de dar cuenta de que su código de ejemplo vinculado está usando el identificador de ventana para definir una región de la pantalla y no está haciendo nada con la ventana de DirectX. Su código de muestra no funcionará alrededor de la obstrucción porque su región ya está dibujada con la otra ventana en frente de la misma cuando accede a ella.
Su mejor apuesta para salvar la aplicación es, probablemente, llevar la ventana de DirectX a la parte superior de la pantalla antes de ejecutar el código para capturar la imagen. Puede usar la función Wind32API BringWindowToTop para hacer eso (http://msdn.microsoft.com/en-us/library/ms632673%28VS.85%29.aspx).
No sé si esto es aplicable a su proyecto, pero uno, teórico, solución que conozco es a cree un retraso en la función de captura de salida visual para que pueda volver a la ventana de DirectX antes de comenzar a grabar. – GeorgePotter
No entiendo lo que quiere decir ... – Vercas
Usted dice que desea capturar lo que se representa con la ventana de DirectX, incluso si dicha ventana está en segundo plano. Si la razón por la que desea hacerlo es porque, por ejemplo, hay un retraso entre el inicio del programa de grabación y el cambio a la ventana de DirectX, entonces podría intentar crear un retraso en el programa para permitirle cambiar a la ventana de DirectX. Probablemente esa no sea su situación pero, si lo es, ese método podría ayudar. – GeorgePotter