Verfügbare Auflösungen
Aus DGL Wiki
Windows
Mit folgendem Code kann man sich in Delphi von Windows die Verfügbaren Auflösungen holen:
procedure TForm1.Button1Click(Sender: TObject);
var
DC: THandle; // display context
Bits: Integer; // bits per pixel
HRes: Integer; // horizontal resolution
VRes: Integer; // vertical resolution
DM: TDevMode; // to Save EnumDisplaySettings
ModeNum: Longint; // video mode number
Ok: Bool;
fre: Integer; // refresh rate
begin
DC := GetDC(Handle);
Bits := GetDeviceCaps(DC, BITSPIXEL);
HRes := GetDeviceCaps(DC, HORZRES);
VRes := GetDeviceCaps(DC, VERTRES);
fre := GetDeviceCaps(DC, VREFRESH);
// Show Current Resolution
Edit1.Text := Format('%d bit, %d x %d', [Bits, HRes, VRes]);
ReleaseDC(Handle, DC); // Show all modes available ModeNum := 0; // The 1st one
ModeNum := 0;
EnumDisplaySettings(nil, ModeNum, DM);
ListBox1.Items.Add(Format('%d bit, %d x %d bei %d Hz', [DM.dmBitsPerPel,
DM.dmPelsWidth, DM.dmPelsHeight, Dm.dmDisplayFrequency]));
Ok := True;
while Ok do
begin
Inc(ModeNum); // Get next one
Ok := EnumDisplaySettings(nil, ModeNum, DM);
ListBox1.Items.Add(Format('%d bit, %d x %d bei %d Hz', [DM.dmBitsPerPel,
DM.dmPelsWidth, DM.dmPelsHeight, Dm.dmDisplayFrequency]));
end;
end;
SDL
Folgendes Code Fragment zeigt eine Möglichkeit, plattformunabhängig mit der SDL die möglichen Auflösungen abzufragen
SDL_Rect** GetModes(int bpp)
{
int flags=SDL_DOUBLEBUF|SDL_FULLSCREEN;
SDL_Rect **formats;
SDL_PixelFormat format;
const SDL_VideoInfo* info;
info=SDL_GetVideoInfo();
if(info->hw_available)
{
flags|=SDL_HWSURFACE;
}
else
{
flags|=SDL_SWSURFACE;
}
if(info->blit_hw)
{
flags|=SDL_HWACCEL;
}
format.BitsPerPixel=bpp; //Welche Farbtiefe soll abgefragt werden
formats=SDL_ListModes(&format,flags); //Frage die SDL nach den Auflösungen mit den passenden Flags ab
return formats;
}
Das letzte Element der List ist NULL, um die komplette Liste auszugeben dient das nächste Codefragment.
void printList(SDL_Rect** modes)
{
for(int i=0;modes[i]!=0;i++)
{
printf("%i x %i",modes[i].w,modes[i].h)
}
}
Quelle
Gefunden von Slave irgendwo im Netz.