[VB.NET 2003] qualité couleur écran

Signaler
Messages postés
117
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
26 juin 2007
-
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
Bonjour,

Je cherche comment connaitre la qualité couleur de l'écran. Si elle est paramétré en 32bit ou en 256 couleurs par exemple,

Quelqu'un à t'il une idée.

Merci

A+

6 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
19
Il te suffit pour celà d'utiliser la fonction EnumDisplaySettings de la librairie user32 de l'Api de Windows, et, dans la structure :

Private Type DEVMODE
    dmDeviceName As String * CCDEVICENAME
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
    dmYResolution As Integer
    dmTTOption As Integer
    dmCollate As Integer
    dmFormName As String * CCFORMNAME
    dmUnusedPadding As Integer
    dmBitsPerPel As Integer
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
End Type
aller à la pêche de dmBitsPerPel (qui est la profondeur en cours des couleurs d'affichage)
Messages postés
117
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
26 juin 2007

Je ne vois pas trops comment utiliser ce que tu explique et j'ai l'impression que ce n'est pas du VB.Net.

Peu tu détaiiler stp

Merci
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
Dim ecrans() As System.Windows.Forms.Screen = System.Windows.Forms.Screen.AllScreens
Dim upEcran As Integer

upEcran = ecrans.GetUpperBound(0)
For i As Integer = 0 To upEcran
    MessageBox.Show(ecrans(i).BitsPerPixel.ToString)
Next






---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
19
ce que j'ai écrit, morickno, n'est ni du VB ni du VB.net, mais tout simplement le rappel de l'existence d'une fonction de l'Api de Windows, fonction utilisable quel que soit le langage de développement utilisé.......
Messages postés
117
Date d'inscription
vendredi 22 avril 2005
Statut
Membre
Dernière intervention
26 juin 2007

J'ai réussis à utiliser cette exemple mais il me retourne systematiquement la même valeur pour dmBitsPerPel. Faut t'il initialiser quelque chose (DEVMODE) pour prendre en compte l'écran actif.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
19
Je ne comprends pas ce que tu veux dire par "il me retourne systématiquement la même valeut" ....

La valeur retournée est celle que tu définis dans les paramètres de Windows (156 couleurs ou couleurs 16 bits ou couleur 32 bits) et ne change certes pas tant que ces paramètres ne sont pas changés !

ce bout de code marche parfaitement chez moi.
Voilà sous VB6 (adapte à VB.Net)

Option Explicit
Const ENUM_CURRENT_SETTINGS As Long = -1&
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
Private Type DEVMODE
    dmDeviceName As String * CCDEVICENAME
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
    dmYResolution As Integer
    dmTTOption As Integer
    dmCollate As Integer
    dmFormName As String * CCFORMNAME
    dmUnusedPadding As Integer
    dmBitsPerPel As Integer
    dmPelsWidth As Long
    dmPelsHeight As Long
    dmDisplayFlags As Long
    dmDisplayFrequency As Long
End Type
Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpmondeviceode As Any) As Boolean
Private Sub Form_Load()
    Dim mondevice As DEVMODE
    Call EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, mondevice)
    MsgBox mondevice.dmBitsPerPel & " bits par pixel"
End Sub