Verfügbare Auflösungen: Unterschied zwischen den Versionen
Aus DGL Wiki
Flash (Diskussion | Beiträge) K (Die Seite wurde neu angelegt: „Mit folgendem Code kann man sich in Delphi von Windows die Verfügbaren Auflösungen holen: <pascal> procedure TForm1.Button1Click(Sender: TObject); var DC: TH…“) |
|||
Zeile 1: | Zeile 1: | ||
+ | == Windows == | ||
+ | |||
Mit folgendem Code kann man sich in Delphi von Windows die Verfügbaren Auflösungen holen: | Mit folgendem Code kann man sich in Delphi von Windows die Verfügbaren Auflösungen holen: | ||
<pascal> | <pascal> | ||
Zeile 34: | Zeile 36: | ||
end; | end; | ||
end; </pascal> | end; </pascal> | ||
+ | |||
+ | == SDL == | ||
+ | |||
+ | Folgendes Code Fragment zeigt eine Möglichkeit, plattformunabhängig mit der SDL die möglichen Auflösungen abzufragen | ||
+ | <source lang="c"> | ||
+ | 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; | ||
+ | }</source> | ||
+ | |||
+ | Das letzte Element der List ist NULL, um die komplette Liste auszugeben dient das nächste Codefragment. | ||
+ | |||
+ | <source lang="c"> | ||
+ | void printList(SDL_Rect** modes) | ||
+ | { | ||
+ | for(int i=0;modes[i]!=0;i++) | ||
+ | { | ||
+ | printf("%i x %i",modes[i].w,modes[i].h) | ||
+ | } | ||
+ | }</source> | ||
==Quelle== | ==Quelle== | ||
Gefunden von '''Slave''' irgendwo im Netz. | Gefunden von '''Slave''' irgendwo im Netz. |
Aktuelle Version vom 2. April 2010, 12:04 Uhr
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.