Xamarin.MacでRetina Displayか判別する
Mac OS XでRetina Displayに対応するアプリケーションを作るための基礎となる。
目次
概要
実装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);
};
}
}