Определить глубину цвета экрана / монохромный в .NET compact framework 2.0? - PullRequest
4 голосов
/ 22 января 2010

Я использую .NET CF 2.0 на нескольких устройствах, которые имеют разные возможности отображения (в частности, цветной / монохромный), которые я хотел бы определить во время выполнения, но не могу найти какие-либо методы, обеспечивающие доступ к этой информации .

Ответы [ 2 ]

3 голосов
/ 22 января 2010

P / Invoke GetDeviceCaps с COLORRES для значения nIndex.

Редактировать 1

Это дает вам глубину цвета, но не фактический «цвет» по сравнению с «монохромным». Этот на самом деле нигде не предоставляется, потому что на самом деле это не важно на этом уровне.

Как правило, вы можете посмотреть на глубину цвета и сказать, что, если он 8-битный или менее, он, скорее всего, будет в оттенках серого. Большим скорее всего будет цвет.

Конечно, производитель мог бы использовать 16-битный драйвер на монохромном дисплее. Нет никаких причин, по которым вы не можете это сделать, это просто неэффективно, так как монохромное оборудование не имеет никаких проводов или приспособлений для дополнительных бит, поэтому их просто бросают на пол.

Если вам действительно нужно знать, является ли он цветным или монохромным, единственный надежный способ узнать это на самом деле спросить пользователя через настройку.

2 голосов
/ 22 января 2010

Чтобы получить эту информацию, вам нужно P / Invoke GetDC () и GetDeviceCaps (). Вот ваша ссылка:

http://blogs.msdn.com/davidklinems/archive/2005/02/02/366042.aspx

...