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

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


person ZippyBurger    schedule 22.01.2010    source источник


Ответы (2)


P/вызовите GetDeviceCaps с COLORRES для значения nIndex.

Изменить 1

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

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

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

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

person ctacke    schedule 22.01.2010
comment
Это даст мне количество бит на пиксель, но не скажет мне, монохромное оно или нет. - person ZippyBurger; 23.01.2010
comment
Вот чего я боялся. Спасибо за информацию. - person ZippyBurger; 23.01.2010

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

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

person MusiGenesis    schedule 22.01.2010