Ниже приведена процедура, получающая и отображающая в ListBox все возможные видеорежимы.
Code: |
procedure TForm1.FormCreate(Sender: TObject); var i: Integer; DevMode : TDeviceMode; begin i:=0; while EnumDisplaySettings(nil,i,DevMode) do begin with Devmode do ListBox1.Items.Add(Format('%dx%d %d Colors', [dmPelsWidth,dmPelsHeight,Int64(1) shl dmBitsperPel])); Inc(i); end; end; |
Получение параметров текущего видеорежима
Помимо вызова EnumDisplaySettings инфомацию о текущем видеорежиме можно получать и другими способами.Получить количество битов цвета текущего видеорежима можно и другим способом:
GetDeviceCaps(Form1.Canvas.Handle, BITSPIXEL) *
GetDeviceCaps(Form1.Canvas.Handle, PLANES)
Получаемые значения при этом:
1 = 2 бита на точку
4 = 16 бита на точку
8 = 256 бита на точку
15 = 32768 бита на точку (возвркащает 16 для большинства драйверов экранных устройств)
16 = 65535 бита на точку
24 = 16,777,216 бита на точку
32 = 16,777,216 бита на точку (то же 24)
Непосредственно количество цветов можно так же легко подсчитать:
NumberOfColors := (1 shl
(GetDeviceCaps(Form1.Canvas.Handle, BITSPIXEL) *
GetDeviceCaps(Form1.Canvas.Handle, PLANES));
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!