Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

APPLIQUER UNE RESOLUTION GRÂCE À DIRECTDRAW


Information sur la source

Catégorie :Direct X Source .NET ( DotNet ) Classé sous : Résolution, Ecran, DirectX, DirectDraw, API Niveau : Débutant Date de création : 06/11/2007 Date de mise à jour : 06/11/2007 15:01:24 Vu : 5 233

Note :
Aucune note

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
DirectDraw (API DirectX), qui permet de lancer des applis en 2D ou 3D va nous servir ici à récupérer les résolutions supportées par la carte graphique et d'appliquer une résolution à votre écran tant que la Form est lancée.

Nous utiliserons ici la version 7 de DirectX.

Cette source est une adaptation en VB.NET








------

Pré-requis :

1) Lancer un nouveau projet depuis VS 2005.
2) Importer la dll DirectX 7 pour VB :
      ¤ Menu Projet > "Ajouter une référence"
      ¤ Aller sur l'onglet "Référence" et rechercher "C:\WINDOWS\System32\dx7vb.dll"
      ¤ Cliquer OK
3) Insérer dans le projet une ListBox (LB_DispoResolutions)
4) Insérer un bouton (BTN_Valid)


              
 

Source

  • 'On importe la bibliothèque de Dx
  • Imports DxVBLib
  • Public Class Form1
  • Dim objDx As DirectX7 'DirectX 7
  • Dim objDraw7 As DirectDraw7 'API DirectDraw
  • Dim objEnumModes As DirectDrawEnumModes 'Résolutions Disponibles
  • Private Function SetNewDisplayMode()
  • 'Si aucune résolution n'est choisie
  • If LB_DispoResolutions.SelectedIndex = -1 Then Exit Function
  • Dim ddsd As DDSURFACEDESC2 'Propriétés de la Surface
  • Dim i As Integer
  • 'Récupère le mode d'affichage choisi dans la Listbox
  • i = LB_DispoResolutions.SelectedIndex
  • 'Récupère les propriétés de ce mode
  • objEnumModes.GetItem(i + 1, ddsd)
  • 'Applique la Résolution choisie
  • objDraw7.SetDisplayMode(ddsd.lWidth, ddsd.lHeight, ddsd.ddpfPixelFormat.lRGBBitCount, 0, CONST_DDSDMFLAGS.DDSDM_DEFAULT)
  • Me.Refresh()
  • End Function
  • Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • Dim ddsd As DDSURFACEDESC2 'Propriétés de la Surface.. (dont la taille : Width & Height)
  • Dim i, R_Count As Integer
  • objDx = New DirectX7
  • 'Création d'un Objet DirecDraw
  • objDraw7 = objDx.DirectDrawCreate("")
  • 'Récupère les != résolutions disponibles
  • objEnumModes = objDraw7.GetDisplayModesEnum(DxVBLib.CONST_DDEDMFLAGS.DDEDM_DEFAULT, ddsd)
  • 'Nombre de Résolutions dispo
  • R_Count = objEnumModes.GetCount() '
  • For i = 1 To R_Count
  • objEnumModes.GetItem(i, ddsd)
  • 'Insertion de chaque Résolution (Width x Height x Couleurs) dans la Listbox
  • LB_DispoResolutions.Items.Add(CStr(ddsd.lWidth) & "x" & CStr(ddsd.lHeight) & "x" & CStr(ddsd.ddpfPixelFormat.lRGBBitCount))
  • Next i
  • End Sub
  • Private Sub BTN_Valid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_Valid.Click
  • 'Appelle la Fonction
  • SetNewDisplayMode()
  • End Sub
  • End Class
'On importe la bibliothèque de Dx
Imports DxVBLib

Public Class Form1

    Dim objDx As DirectX7 'DirectX 7
    Dim objDraw7 As DirectDraw7 'API DirectDraw
    Dim objEnumModes As DirectDrawEnumModes 'Résolutions Disponibles

    Private Function SetNewDisplayMode()
        'Si aucune résolution n'est choisie
        If LB_DispoResolutions.SelectedIndex = -1 Then Exit Function

        Dim ddsd As DDSURFACEDESC2 'Propriétés de la Surface
        Dim i As Integer

        'Récupère le mode d'affichage choisi dans la Listbox
        i = LB_DispoResolutions.SelectedIndex

        'Récupère les propriétés de ce mode
        objEnumModes.GetItem(i + 1, ddsd)

        'Applique la Résolution choisie
        objDraw7.SetDisplayMode(ddsd.lWidth, ddsd.lHeight, ddsd.ddpfPixelFormat.lRGBBitCount, 0, CONST_DDSDMFLAGS.DDSDM_DEFAULT)
        Me.Refresh()

    End Function


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim ddsd As DDSURFACEDESC2 'Propriétés de la Surface.. (dont la taille : Width & Height)
        Dim i, R_Count As Integer

        objDx = New DirectX7
        'Création d'un Objet DirecDraw
        objDraw7 = objDx.DirectDrawCreate("")

        'Récupère les != résolutions disponibles
        objEnumModes = objDraw7.GetDisplayModesEnum(DxVBLib.CONST_DDEDMFLAGS.DDEDM_DEFAULT, ddsd)
        'Nombre de Résolutions dispo
        R_Count = objEnumModes.GetCount() '

        For i = 1 To R_Count
            objEnumModes.GetItem(i, ddsd)
            'Insertion de chaque Résolution (Width x Height x Couleurs) dans la Listbox
            LB_DispoResolutions.Items.Add(CStr(ddsd.lWidth) & "x" & CStr(ddsd.lHeight) & "x" & CStr(ddsd.ddpfPixelFormat.lRGBBitCount))
        Next i


    End Sub

    Private Sub BTN_Valid_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_Valid.Click
        'Appelle la Fonction
        SetNewDisplayMode()
    End Sub

End Class

Historique

06 novembre 2007 15:01:24 :
Description

Commentaires et avis

signaler à un administrateur
Commentaire de Renfield le 07/11/2007 06:42:37 administrateur CS

necessite donc d'installer DX7 ... c'est dommage.

signaler à un administrateur
Commentaire de econs le 07/11/2007 21:02:39 administrateur CS

oui et c'est un peu désuet aujourd'hui.

En VB6, quand on tapait çà :

Dim i, R_Count As Integer

i n'était pas un Integer. Est-ce toujours le cas avec .NET ?

signaler à un administrateur
Commentaire de tinux le 08/11/2007 12:59:39

En VB6 il s'agit de Long effectivement.

Il est vrai que dx7 fait pâle mine.. je vais voir pour dx8/9.. :p

signaler à un administrateur
Commentaire de Renfield le 08/11/2007 13:19:13 administrateur CS

faisable via APIs et surement via le FrameWork .Net

signaler à un administrateur
Commentaire de tinux le 10/11/2007 18:51:02

Pas surement, c'est faisable en .NET, il y a d'ailleurs déjà des sources sur VBF, l'interêt ici était d'utiliser DirectDraw, qui je l'accorde a disparu aujourd'hui.

signaler à un administrateur
Commentaire de Bidou le 13/11/2007 17:07:42 administrateur CS

Dim i, R_Count As Integer

>> i et R_Count sont des Integers

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

DirectDraw DirectX [ par CiscoFun ] Bonjour,Voila je débute dans la programmation graphique et j'aimerais que quelqu'un me donne l'adresse d'un site (j'en ai deja testé plusieur mais rie Api de résolution d'écran [ par vedettecriim ] Est-ce que quelqu'un aurait le code et l'API Windows qui permettrait de changer la résolution de l'écran ainsi que la fréquence et la couleur.Vous pou Directdraw couleur transparente [ par dester ] Bon j'ai comme un bleme.Voila je me suis dis : "hopla je me met a developper en directX"Et tout a coup ont surgis quelque problemes (loleu)Alors prem API pour resolution d'ecran [ par greg13 ] Existe t'il une api qui permet de connaitre la resolution de l'ecranMerciGreg résolution de l'ecran [ par essendoubi ] svp je cherche un moyen pour pouvoir changer la résolution de l'affichage de l'écran.merci pour toute aide redimentionner [ par tchouck ] Bonjour j'ai crée une appli qui fonctionne trés bien avec ma résolution d'ecran (1280*1024) seulement sur un autre PC dont la résolution un de 800*600 Résolution d'ecran SANS VB6FR.dll ! (sos) [ par loskiller62 ] Je voudrais récuperer la résolution d'écran mais sans ke le prog ai besoin du fichier vb6fr.dllle coup du screen.width etcle coup du Private Declare F DirectX -> DirectDraw [ par ShadowMaster ] Bonjour je vous explique mon probleme: j'aimerai savoir si il est possible de "prendre" la couleur d'un pixel dans une surface directDraw un truc du g résolution ecran pr page web! très important [ par supernulle ] helloG réalisé un site en 1024*768 en fait j'aurais voulu savoir s'il y avait une solution pr tous ceux ki ont une résolution en 800/600 voit mon site résolution d ecran !! [ par supernulle ] helloG réalisé un site en 1024*768 en fait j'aurais voulu savoir s'il y avait une solution pr tous ceux ki ont une résolution en 800/600 voit mon site


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.