Я делаю игру, и я хотел бы получить список действительных полноэкранных разрешений для запуска. Я не могу найти способ сделать это для Mac OS X;
Как в системные настройки Displays
панель.
Является ли это возможным?
Если вы хотите получить разрешение экрана дисплея.
Это может быть то, что вы после.
NSScreen* thescreen;
id theScreens = [NSScreen screens];
for (thescreen in theScreens) {
NSLog(@"%@x%@", [NSNumber numberWithFloat:[thescreen frame].size.width], [NSNumber numberWithFloat:[thescreen frame].size.height]);
}
Этот пример даст вам задавать разрешения всех дисплеев
Посмотри на яблоки NSScreen
Если это не совсем то, что вам нужно, вы можете расширить свой вопрос.
ура
Это может быть то, что вы ищете, и вам придется поиграть с ним, чтобы увидеть, действительно ли он возвращает правильную информацию. Я получил несколько результатов, следовательно, фильтр. Но если вы играете с этим, вы должны быть в состоянии уменьшить его.
Тестовый проект использовал ARC, и это вызвало __bridges ..
Но, опять же, я уверен, что у вас будет время лучше все это кодировать.
Моя ссылка была Справочник по Quartz Display Services
NSArray* theref = (__bridge NSArray *)(CGDisplayCopyAllDisplayModes ( CGMainDisplayID(), nil ));
NSMutableArray * rezes = [[NSMutableArray alloc]init];
for (id aMode in theref) {
CGDisplayModeRef thisMode = (__bridge CGDisplayModeRef)(aMode);
size_t theWidth = CGDisplayModeGetWidth( thisMode );
size_t theHeight = CGDisplayModeGetHeight( thisMode );
NSString *theRez = [NSString stringWithFormat:@"%zux%zu",theWidth,theHeight];
if (![rezes containsObject:theRez]) {
[rezes addObject:theRez];
}
}
NSLog(@" display deatails = %@", rezes);
—>
display deatails = (
2560x1440,
1280x720,
640x480,
800x600,
1024x768,
1280x1024,
1344x756,
1600x900,
1680x1050,
1920x1080,
1600x1200,
1920x1200
)
В C ++ http://specialmeaning.blogspot.com/2016/07/yes-apple-i-did-it.html
#include <iostream>
#include <CoreGraphics/CoreGraphics.h>
int main(int argc, const char * argv[]) {
// insert code here...
auto mainDisplayId = CGMainDisplayID();
std::cout << "Current resolution was "<< CGDisplayPixelsWide(mainDisplayId) << 'x'
<< CGDisplayPixelsHigh(mainDisplayId) << std::endl
<< "Supported resolution modes:";
auto modes = CGDisplayCopyAllDisplayModes(mainDisplayId, nullptr);
auto count = CFArrayGetCount(modes);
CGDisplayModeRef mode;
for(auto c=count;c--;){
mode = (CGDisplayModeRef)CFArrayGetValueAtIndex(modes, c);
auto w = CGDisplayModeGetWidth(mode);
auto h = CGDisplayModeGetHeight(mode);
std::cout << std::endl << w << 'x' << h;
}
CGDisplaySetDisplayMode(mainDisplayId, mode, nullptr);
std::cout << " is the selected top one." << std::endl;
std::cin.get();
return 0;
}