画面解像度や色数、デスクトップのサイズの取得

場合によっては画面の表示状態を取得したいときもあると思います。現在の画面解像度がどれくらいあるのか調べるにはTScreenのWidthとHeightを調べます。TScreenはForms ユニットが組み込まれていればDelphiが勝手に作成します。オブジェクトはFormsユニットでグローバル変数として用意されているので、Screen.Width 等とすれば値を取得できます。

現在の画面の色数を取得するにはAPIを叩かなくてはなりません。取得にはGetDeviceCaps関数を使います。第一引数にはGetDC(0)で取得したデバイスコンテキストを指定し、第二引数にBITSPIXELを指定すれば、関数の戻り値として値が返されます。返される値はBit深度ですので、256色の場合は8 、1677万色の場合は24が返されます。

画面の解像度ではなく、デスクトップのサイズを取得する場合はSystemParametersInfoを使用してデスクトップが占める領域を取得してから、サイズを計算する必要があります。

procedure TForm1.ScreenSize1Click(Sender: TObject);
//解像度の取得
begin
  Caption := Format('%d x %d', [Screen.Width, Screen.Height]);
end;


procedure TForm1.BitCount1Click(Sender: TObject);
//画面色数の取得
var
  DC: HDC;
begin
  DC := GetDC(0);
  Caption := IntToStr(GetDeviceCaps(DC, BITSPIXEL)) + 'Bit';
  ReleaseDC(0, DC);//忘れずに開放!!
end;


procedure TForm1.DesktopSize1Click(Sender: TObject);
//デスクトップのサイズを取得
var
  DeskRect: TRect;
begin
  SystemParametersInfo(SPI_GETWORKAREA, 0, @DeskRect, 0);
  with DeskRect do
    Caption := Format('%d x %d', [Right - Left, Bottom - Top]);
end;

Copyright 2001 Rinka Kouzuki All Rights Reserved.