差分

ナビゲーションに移動 検索に移動

Xamarin.MacでRetina Displayか判別する

1,768 バイト追加, 2015年4月24日 (金) 07:33
ページの作成:「Mac OS XRetina Displayに対応するアプリケーションを作るための基礎となる。 ==概要== retinaでググってXamarinにしろ[...」
[[Mac OS X]]で[[Retina Display]]に対応するアプリケーションを作るための基礎となる。

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

==実装1==
NSWindowsやNSScreenのBackingScaleFactorプロパティを調べる。

<source lang="csharp">
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);
};
}
}
</source>

==関連項目==
*[[Xamarin.Mac/ディスプレイの設定変更を検出する]]

==参考文献==
{{reflist}}

{{stub}}

[[category:Xamarin.Mac]]
匿名利用者

案内メニュー