「Xamarin.MacでRetina Displayか判別する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
42行目: 42行目:
 
*[[Xamarin.Mac/ディスプレイの設定変更を検出する]]
 
*[[Xamarin.Mac/ディスプレイの設定変更を検出する]]
 
*[[Xamarin.Mac/NSOpenGLViewをRetina Displayに対応させる]]
 
*[[Xamarin.Mac/NSOpenGLViewをRetina Displayに対応させる]]
 +
*[[MonoMac/フルスクリーン表示に対応する]]
  
 
==参考文献==
 
==参考文献==

2015年6月5日 (金) 01:41時点における版

Mac OS XRetina Displayに対応するアプリケーションを作るための基礎となる。

概要

retinaでググってXamarinにしろObjective-CにしろiOSの情報ばかりでOSXの情報が少ないすぎて泣ける。 iMac 5K対応のアプリを作りたいね。

実装1

NSWindowsやNSScreenのBackingScaleFactorプロパティを調べる。

    public partial class MainWindowController : NSWindowController
    {
        // 〜〜〜省略〜〜〜

        public override void WindowDidLoad()
        {
            base.WindowDidLoad();

            this.Window.DidMove += (object sender, EventArgs e) => {

                // このウインドウがあるスクリーンが非Retinaならば1.0f、Retinaならば1.0fより大きな値となる。
                var scale = this.Window.BackingScaleFactor;
                Console.WriteLine(scale);

                // NSScreenにもBackingScaleFactorがある
                foreach (var screen in NSScreen.Screens)
                {
                    Console.WriteLine(screen.ColorSpace + ", " + screen.BackingScaleFactor);
                }
            };

            // Retinaと非Retinaのマルチスクリーン環境でウインドウを移動するなどして
            // BackingScaleFactorの値が変化した際にはこのイベントが発生する。
            this.Window.DidChangeBackingProperties += (object sender, EventArgs e) => {
                Console.WriteLine(this.Window.BackingScaleFactor);
            };
        }
    }

関連項目

参考文献