如何在XNA中獲得支持的屏幕分辨率?就像在Windows中更改屏幕分辨率一樣,而不是給出所有可能選項的列表,它只給出其中的一部分。在XNA中獲得支持的屏幕分辨率?
3
A
回答
5
只是使用這個:
foreach (DisplayMode mode in GraphicsAdapter.DefaultAdapter.SupportedDisplayModes) {
//mode.whatever (and use any of avaliable information)
}
但它會給你很少的重複,因爲它也考慮到折射率,所以你可能會包括aswel,或做一些過濾。
3
我不是最新的XNA,但我不認爲有一個快速和簡單的功能。有一種使用舊的WinForms API的方法,但是因爲我個人不希望鏈接到其他應用程序中,最簡單的方法就是使用本機函數。
首先,定義將要使用本機結構:
[StructLayout(LayoutKind.Sequential)]
internal struct DEVMODE
{
private const int CCHDEVICENAME = 0x20;
private const int CCHFORMNAME = 0x20;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
public string dmDeviceName;
public short dmSpecVersion;
public short dmDriverVersion;
public short dmSize;
public short dmDriverExtra;
public int dmFields;
public int dmPositionX;
public int dmPositionY;
public int dmDisplayOrientation;
public int dmDisplayFixedOutput;
public short dmColor;
public short dmDuplex;
public short dmYResolution;
public short dmTTOption;
public short dmCollate;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
public string dmFormName;
public short dmLogPixels;
public int dmBitsPerPel;
public int dmPelsWidth;
public int dmPelsHeight;
public int dmDisplayFlags;
public int dmDisplayFrequency;
public int dmICMMethod;
public int dmICMIntent;
public int dmMediaType;
public int dmDitherType;
public int dmReserved1;
public int dmReserved2;
public int dmPanningWidth;
public int dmPanningHeight;
}
我們還需要定義兩個本地函數,我們將使用:
[DllImport("user32.dll")]
private static extern bool EnumDisplaySettings(string lpszDeviceName, int iModeNum, ref DEVMODE lpDevMode);
[DllImport("user32.dll")]
private static extern int GetSystemMetrics(int nIndex);
而在去年,我們的功能,列出所有屏幕分辨率和一個獲得當前的屏幕分辨率:
public static List<string> GetScreenResolutions()
{
var resolutions = new List<string>();
try
{
var devMode = new DEVMODE();
int i = 0;
while (EnumDisplaySettings(null, i, ref devMode))
{
resolutions.Add(string.Format("{0}x{1}", devMode.dmPelsWidth, devMode.dmPelsHeight));
i++;
}
resolutions = resolutions.Distinct(StringComparer.InvariantCulture).ToList();
}
catch (Exception ex)
{
Console.WriteLine("Could not get screen resolutions.");
}
return resolutions;
}
public static string GetCurrentScreenResolution()
{
int width = GetSystemMetrics(0x00);
int height = GetSystemMetrics(0x01);
return string.Format("{0}x{1}", width, height);
}
相關問題
- 1. iPhone 4,高分辨率屏幕支持
- 2. 爲Android開發高分辨率屏幕,但支持低分辨率屏幕
- 3. 如何獲得屏幕分辨率R
- 4. 獲取所有支持的屏幕分辨率
- 5. 獲取屏幕分辨率
- 6. 獲取屏幕分辨率
- 7. 在iphone中獲取屏幕分辨率
- 8. 如何獲得顯示器支持的最大屏幕分辨率使用C#
- 9. 屏幕分辨率
- 10. 屏幕分辨率
- 11. 屏幕分辨率
- 12. 屏幕分辨率
- 13. 屏幕分辨率
- 14. 屏幕分辨率
- 15. adobe air支持android中的不同屏幕分辨率
- 16. iPhone模擬器屏幕分辨率vs iPhone屏幕分辨率
- 17. 如何在ActionScript 3中獲得用戶的屏幕分辨率?
- 18. 支持相同的分辨率,但不同DPI的屏幕
- 19. 在XNA中更改分辨率 - 屏幕後黑色
- 20. HTML5網站,以支持不同的屏幕分辨率
- 21. Android屏幕支持相同密度下的不同分辨率
- 22. 應用程序支持所有的i-Phone屏幕分辨率?
- 23. Android的圖像定位支持多種屏幕分辨率
- 24. Android的屏幕分辨率
- 25. Android的屏幕分辨率
- 26. C++的屏幕分辨率
- 27. 如何在java中獲得屏幕分辨率?
- 28. 如何在java中獲得屏幕分辨率?
- 29. 如何在C++中獲得屏幕分辨率?
- 30. 的屏幕分辨率獲取圖像
雖然接受的答案是要走的路,+1解釋如何獨立於XNA做這樣的事情。 – 2014-05-02 22:33:36