「Xamarin.Macでディスプレイの設定変更を検出する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
imported>Administrator
imported>Administrator
 
44行目: 44行目:
  
 
==関連項目==
 
==関連項目==
*[[Xamarin.Mac/Retina Displayか判別する]]
+
*[[Xamarin.MacでRetina Displayか判別する]]
  
 
==参考文献==
 
==参考文献==

2017年12月21日 (木) 07:23時点における最新版

Xamarin.Macディスプレイ周りの設定がなにかしら変更された際にそれを検出できると色々嬉しい。

概要[編集 | ソースを編集]

Xamarin.Macディスプレイ周りの設定がなにかしら変更された際にそれを検出できると色々嬉しい。 そんなことより世の中にはなんと外部ディスプレイを接続されるだけでクラッシュするクソアプリがあるらしい。デバッグはちゃんとしよう。

実装1[編集 | ソースを編集]

AppDelegateのScreenParametersChangedメソッドをオーバーライドするだけで検出できる。

    public partial class AppDelegate : NSApplicationDelegate
    {
        MainWindowController mainWindowController;

        public AppDelegate()
        {
        }

        public override void DidFinishLaunching(NSNotification notification)
        {
            mainWindowController = new MainWindowController();
            mainWindowController.Window.MakeKeyAndOrderFront(this);

            ScreenInfo();
        }

        public override void ScreenParametersChanged(NSNotification notification)
        {
            ScreenInfo();
        }

        void ScreenInfo()
        {
            foreach (var screen in NSScreen.Screens)
            {
                Console.WriteLine(screen.Frame);
                Console.WriteLine(screen.BackingScaleFactor);
                Console.WriteLine(screen.Frame.Width * screen.BackingScaleFactor + "," + screen.Frame.Height * screen.BackingScaleFactor);
                Console.WriteLine(screen.DeviceDescription);
                Console.WriteLine("----");
            }
        }
    }

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]