Home » Tipps & Tricks » System » Systemeinstellungen » Auflösung und Farbtiefe ändern

Auflösung und Farbtiefe ändern

Folgende Funktion ändert Auflösung und Farbtiefe. Nach Beenden des Programms wird die ursprüngliche Auflösung wiederhergestellt, die Änderungen sind also nicht dauerhaft.Als Parameter erwartet die Funktion die Anzahl der Pixel auf der X-Achse (z.B. 1024), die Pixel auf der Y-Achse (z.B. 76 und die Farbtiefe (z.B. 16). Sie gibt True zurück, falls die Änderungen erfolgreich waren. Vor dem Umstellen, wird getestet, ob der Monitor die gewünschte Auflösung unterstützt.

function ChangeResolution(sizex, sizey, bpp: DWORD): Boolean;
var
  DeviceMode: TDeviceModeA;
  i: Integer;
begin
  i := 0;
  Result := False;
  while EnumDisplaySettings(nil, i, DeviceMode) do begin
    with DeviceMode do
      if (dmPelsWidth = sizex) and
        (dmPelsHeight = SizeY) and
        (dmBitsPerPel = bpp) then begin
        // erst testen, bevor wir umschalten!
        case ChangeDisplaySettings(DeviceMode, CDS_TEST) of
          // es wird klappen!
          DISP_CHANGE_SUCCESSFUL:
            Result := True;

          DISP_CHANGE_RESTART:
            Showmessage('Neustart erforderlich');

          DISP_CHANGE_BADFLAGS:
            Showmessage('Ungültige Bildschirmeinstellungen');

          DISP_CHANGE_FAILED:
            Showmessage('Auflösung konnte nicht geändert werden');

          DISP_CHANGE_BADMODE:
            Showmessage('Bildschirm unterstützt diese Auflösung nicht');

          // Nur Windows NT
          DISP_CHANGE_NOTUPDATED:
            Showmessage('Registry konnte nicht aktualisiert werden');

        else
          Result := True;
        end;

        if Result then
          //jetzt wird umgeschaltet
          ChangeDisplaySettings(DeviceMode, CDS_FULLSCREEN)
      end;
    Inc(i);
  end;
end;

Ein Aufruf könnte so aussehen:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ChangeResolution(800, 600, 16);
end;

Lesen Sie in den Verweisen, wie Sie die aktuelle Auflösung und Farbtiefe ermitteln bzw. Sie bei Bedarf wieder auf die Ursprungsauflösung zurückstellen.

EKON 28