「Xamarin.MacでRetina Displayか判別する」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「Mac OS XでRetina Displayに対応するアプリケーションを作るための基礎となる。 ==概要== retinaでググってもXamarinにしろ[...」) |
|||
41行目: | 41行目: | ||
==関連項目== | ==関連項目== | ||
*[[Xamarin.Mac/ディスプレイの設定変更を検出する]] | *[[Xamarin.Mac/ディスプレイの設定変更を検出する]] | ||
+ | *[[Xamarin.Mac/NSOpenGLViewをRetina Displayに対応させる]] | ||
==参考文献== | ==参考文献== |
2015年6月5日 (金) 01:40時点における版
Mac OS XでRetina Displayに対応するアプリケーションを作るための基礎となる。
概要
retinaでググってもXamarinにしろObjective-CにしろiOSの情報ばかりでOSXの情報が少ないすぎて泣ける。 iMac 5K対応のアプリを作りたいね。
実装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);
};
}
}