Auflösung und Farbtiefe ändern |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
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.
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.