Screenshot DirectX [Résolu]

Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
- - Dernière réponse :  Utilisateur anonyme - 28 juin 2012 à 23:54
Bonjour à tous,
Je travail actuellement sur un projet permettant de prendre des screenshots et de les publier automatiquement sur des réseaux sociaux.
Problème : Les screenshots ne fonctionnent pas en jeux.
J'ai donc pensé à une utilisation de directX mais je ne sais pas tellement comment procéder.

En cherchant un peu sur internet, j'ai trouver ceci :

Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D

Public Class Mainform
    Public GraphicsDevice As Device = Nothing
    Public presentParams As PresentParameters = New PresentParameters

    Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Capture
    End sub

    Sub InitializeGraphics()
        Dim current As Format = Manager.Adapters(0).CurrentDisplayMode.Format
        presentParams.SwapEffect = SwapEffect.Discard
        presentParams.BackBufferFormat = current
        presentParams.Windowed = True
        presentParams.BackBufferHeight = 0
        presentParams.BackBufferWidth = 0

        GraphicsDevice = New Direct3D.Device(0, Direct3D.DeviceType.Hardware, Me, CreateFlags.SoftwareVertexProcessing, presentParams)
    End Sub

    Function CaptureScreenshot(ByVal Device As Direct3D.Device, ByVal Filename As String, ByVal ImageFormat As Direct3D.ImageFileFormat) As Boolean
        Dim Ssurface As Direct3D.Surface
        Dim current As Format = Direct3D.Manager.Adapters(0).CurrentDisplayMode.Format

        Ssurface = Device.GetBackBuffer(0, 0, BackBufferType.Mono)
        SurfaceLoader.Save(Filename, ImageFormat, Ssurface)
        Ssurface.Dispose()

        Return True
    End Function



Sub Capture
     CaptureScreenshot(GraphicsDevice, "C:\image.jpg", ImageFileFormat.Jpeg)
end sub
End class


Apres application du code, j'ai importé les DLL de DirectX se trouvant dans C:\Windows\Microsoft .net\DirectX for Managed Code\
Visual Studio me retourne donc plusieurs erreurs.

Est-ce que quelqu'un pourrai me donner un coup de main ?
Merci :-)
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
3
Merci
Pardon, erreur de lien
Plutôt celui-ci.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
3
Merci
Apparement il faudrai que j'ajoute :

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <startup useLegacyV2RuntimeActivationPolicy="true">

    <supportedRuntime version="v4.0"/>

  </startup>

</configuration>


à mon fichier de configuration, mais de quel fichier s'agit-il svp ?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Sentynel
1
Merci
Bonjour,

Si ta solution est autre chose que de générer en 32 bits, il y en a qui seraient peut-être intéressés de la connaître.
Commenter la réponse de Utilisateur anonyme
0
Merci
Bonsoir,
Apres application du code, j'ai importé les DLL de DirectX se trouvant dans C:\Windows\Microsoft .net\DirectX for Managed Code\
Visual Studio me retourne donc plusieurs erreurs.

Il faut installer le SDK de directx
Commenter la réponse de Utilisateur anonyme
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
0
Merci
Bonsoir banana32,
Oui j'ai déjà essayer d'installer ce SDK deux fois mais pendant l'installation il me retourne une erreur.
Je vais réessayer encore une fois.
Merci
Commenter la réponse de Sentynel
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
0
Merci
Je n'ai plus d'erreurs mais quand je lance un debug, j'obtiens l'erreur suivante :



L'exception System.InvalidOperationException n'a pas été gérée
  Message=Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est : L'assembly en mode mixte est créé avec la version 'v1.1.4322' du runtime et ne peut pas être chargé dans le runtime 4.0 sans d'autres informations de configuration.
  Source=Project
  StackTrace:
       à Project.My.MyProject.MyForms.Create__Instance__[T](T Instance) dans 17d14f5c-a337-4978-8281-53493378c1071.vb:ligne 190
       à Project.My.MyProject.MyForms.get_MainForm()
       à Project.My.MyApplication.OnCreateMainForm() dans C:\Users\Maxime\Dropbox\TeamDev\Project\My Project\Application.Designer.vb:ligne 35
       à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
       à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
       à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
       à Project.My.MyApplication.Main(String[] Args) dans 17d14f5c-a337-4978-8281-53493378c1071.vb:ligne 81
       à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       à System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.IO.FileLoadException
       Message=L'assembly en mode mixte est créé avec la version 'v1.1.4322' du runtime et ne peut pas être chargé dans le runtime 4.0 sans d'autres informations de configuration.
       Source=Project
       StackTrace:
            à Project.MainForm..ctor()
       InnerException: 
Commenter la réponse de Sentynel
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
0
Merci
Probleme régler... Merci quand même...
Commenter la réponse de Sentynel

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.