J'utilise le .NET CF 2.0 sur plusieurs périphériques qui ont différentes capacités d'affichage (en particulier couleur/monochrome) que je voudrais déterminer lors de l'exécution, mais je ne trouve aucune méthode permettant d'accéder à ces informations.Déterminer la profondeur de couleur de l'écran/monochrome dans .NET compact framework 2.0?
Répondre
P/Invoke GetDeviceCaps avec COLORRES pour la valeur nIndex.
Modifier 1
Cela vous donne de la profondeur de couleur, mais pas réelle "couleur" par rapport à "monochrome". Celui-ci n'est en fait fourni nulle part parce que ce n'est pas vraiment important à ce niveau.
Généralement, vous pouvez regarder la profondeur de couleur et dire que si c'est 8 bits ou moins, c'est très, très probablement en niveaux de gris. Grand est susceptible d'être couleur.
Bien sûr, l'OEM aurait pu utiliser un pilote 16bpp sur un écran monochrome. Il n'y a aucune raison que vous ne puissiez pas le faire, c'est juste un gaspillage vraiment inefficace parce que le matériel monochrome n'a pas de fils ou de provisions pour les bits supplémentaires, donc ils sont simplement déversés sur le sol.
Si vous avez vraiment besoin de savoir si c'est la couleur ou le monochrome, la seule façon fiable de savoir est de demander à l'utilisateur via un paramètre.
Pour obtenir cette information, vous devez P/Invoke GetDC() et GetDeviceCaps(). Voici votre lien:
http://blogs.msdn.com/davidklinems/archive/2005/02/02/366042.aspx
Cela m'obtient les bits par pixel mais ne me dit pas si c'est monochrome ou non. – ZippyBurger
Voilà ce dont j'avais peur. Merci pour l'info. – ZippyBurger