IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Utilisation des contrôles Window avec C# et DirectX


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut Utilisation des contrôles Window avec C# et DirectX
    Bonjour à tous.

    Avec Delphi 6 et GLScene (mes anciens outils) on pouvait placer sur une même fiche un GLSceneViewer (un rectangle pour afficher la scène OpenGL) et les contrôle classiques Window (Button, ListBox ….).

    Malgré mais efforts je n’y arrive pas avec Visual C# et DirectX 9 . En particulier si je place un Button sur la fiche il m’apparaît à l’exécution. Même en fixant Windowed à true et en utilisant device.Viewport pour limiter l’affichage de ma scene DirectX à un rectangle, les Buttons qui sont sur la fiche en mode conception, n’apparissent pas à l’exécution.

    Si vous avez des idées sur la question, Merci d’avance.

  2. #2
    Membre éclairé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Par défaut
    Initialise ton device direct3d en utilisant une picture box... ainsi directx n'utilisera qu'elle pour son affichage et te permettra de mettre tout les contrôles que tu veux dans ta fenêtre d'application. Il y a plein d'exemples sur internet

    __________________________
    Mon Site

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Citation Envoyé par funkydata
    Initialise ton device direct3d en utilisant une picture box... ainsi directx n'utilisera qu'elle pour son affichage et te permettra de mettre tout les contrôles que tu veux dans ta fenêtre d'application. Il y a plein d'exemples sur internet

    __________________________
    Mon Site
    Excellent! Merci.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Encore Merci pour la réponse, mais j'ai cru un peu vite que j'avais compris. En pratique j’ai des petits problèmes :


    Si je crée une PictureBox1 à la souris ,j’obtiens une erreur à l’exécution à la ligne :

    device = new Device(0, DeviceType.Hardware, pictureBox1,
    CreateFlags.SoftwareVertexProcessing, presentParams);

    Si je crée une PictureBox2 dans le programme pas d’erreur mais ma fenêtre est complètement vide.(La pictureBox n'apparait même pas )

    Voici le code dans le second cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    PictureBox pictureBox2 = null;
     
    protected bool InitializeGraphics()
    {
    PresentParameters presentParams = new PresentParameters();
     
    presentParams.Windowed = true;
    presentParams.SwapEffect = SwapEffect.Discard;
    //presentParams.BackBufferFormat = Format.X8R8G8B8;
    presentParams.AutoDepthStencilFormat = DepthFormat.D24S8;
    presentParams.EnableAutoDepthStencil = true;
    //presentParams.BackBufferCount = 1; 
     
    pictureBox2 = new PictureBox();
    pictureBox2.Width = 300;
    pictureBox2.Height = 300;
    pictureBox2.Left = 10;
    pictureBox2.Top = 10;
    pictureBox2.Visible = true;
     
     
    device = new Device(0, DeviceType.Hardware, pictureBox2, 
    CreateFlags.SoftwareVertexProcessing, presentParams);
     
     
     
    device.RenderState.CullMode = Cull.None ;
    device.RenderState.Lighting = false;
    Si vous avez une idée ou l’adresse d’un tuto sur le problème(tous ceux que j’ai trouvés affiche toujours dans toute la fenêtre ) .


    Merci d’avance.

  5. #5
    Membre éclairé
    Avatar de funkydata
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 515
    Par défaut
    Il faut que tu passe de façon explicite le handle de ta picture box et non l'objet en lui même

    __________________________
    Mon Site

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 80
    Par défaut
    Merci pour la réponse.
    Mais si j'écris :

    device = new Device(0, DeviceType.Hardware, pictureBox2,
    CreateFlags.SoftwareVertexProcessing, presentParams);

    ou

    device = new Device(0, DeviceType.Hardware, pictureBox2.Handle,
    CreateFlags.SoftwareVertexProcessing, presentParams);
    c'est pareil. Le prog s'exécute mais j'obtiens une fenêtre vide.

    J'ai cherché dans les arguments de PresentParameters(qui me sont un peu obscurs) mais sans succès...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/10/2007, 12h59
  2. Peut on utiliser des Webservices WinDEV avec PHP ?
    Par budiste dans le forum WebDev
    Réponses: 8
    Dernier message: 30/03/2006, 11h56
  3. Réponses: 1
    Dernier message: 21/02/2006, 17h13
  4. Réponses: 5
    Dernier message: 13/11/2003, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo