「Xamarin.Macでディスプレイの設定変更を検出する」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「Xamarin.Macでディスプレイ周りの設定がなにかしら変更された際にそれを検出できると色々嬉しい。 ==概要== Xamarin.Macで...」) |
imported>Administrator 細 (Administrator がページ「Xamarin.Mac/ディスプレイの設定変更を検出する」を「Xamarin.Macでディスプレイの設定変更を検出する」に移動しました) |
2017年12月21日 (木) 07:22時点における版
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("----");
}
}
}