3

ゲームを作成しており、ランチャーの有効なフルスクリーン解像度のリストを取得したいと考えています。Mac OS X でこれを行う方法が見つかりません。

システム設定 Displaysペインのように。

ここに画像の説明を入力

出来ますか?

4

2 に答える 2

5

ディスプレイの画面解像度を取得することを意味する場合。

これはあなたが求めているものかもしれません。

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を見てください

これがあなたの求めているものではない場合は、質問を拡大できます。

乾杯


  • 更新します。可能なすべてのディスプレイ解像度が欲しいというOPからのコメントに関して。

これはおそらくあなたが求めているものであり、実際に正しい情報を返すかどうかを確認するためにそれをいじる必要があります。複数の結果が得られたため、フィルターが適用されました。しかし、それで遊ぶなら、それを薄くすることができるはずです.

テスト プロジェクトでは ARC が使用されていたため、__bridges が強制的に使用されていました。

私の参照は Quartz Display Services Referenceでした

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 )

于 2013-09-21T19:28:58.467 に答える