「Xamarin.Macでディスプレイの設定変更を検出する」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「Xamarin.Macでディスプレイ周りの設定がなにかしら変更された際にそれを検出できると色々嬉しい。 ==概要== Xamarin.Macで...」) |
imported>Administrator |
||
(同じ利用者による、間の1版が非表示) | |||
44行目: | 44行目: | ||
==関連項目== | ==関連項目== | ||
− | *[[Xamarin. | + | *[[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("----");
}
}
}