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.