「Xamarin.MacでResource Bundleを利用する」の版間の差分
imported>Monobook 細 Monobook がページ「MonoMac/Resource Bundleを利用する」を「Xamarin.Mac/Resource Bundleを利用する」に移動しました |
imported>Monobook 編集の要約なし |
||
| 1行目: | 1行目: | ||
Xamarin.Macのプロジェクト直下のResourcesフォルダに画像などの各種[[ファイル]]を突っ込んでおくと[[アプリ]]の一部として配布することができる。 | |||
==パスの取得== | ==パスの取得== | ||
| 8行目: | 8行目: | ||
<source lang="csharp"> | <source lang="csharp"> | ||
using System.IO; | using System.IO; | ||
using | using Foundation; | ||
// 中略 | // 中略 | ||
2017年6月19日 (月) 05:08時点における版
Xamarin.Macのプロジェクト直下のResourcesフォルダに画像などの各種ファイルを突っ込んでおくとアプリの一部として配布することができる。
パスの取得
いわゆるアイコンとしてみ見えるMacのアプリは拡張子が「.app」のフォルダであり、その中に本当の実行ファイルやリソースなどが詰め込まれている。 プラットフォームによってはリソースファイルといえばひとつのバイナリに固められて専用APIで取り出したりするが、Mac OSXの場合は単純に「○○○.app/Contents/Resources/」(○○○はアプリ)の中にファイルなどとして格納されている。
アプリのルートディレクトリはNSBundle.MainBundle.BundlePathプロパティで取得できるので、あとは決め打ちえ「Contents」と「Resources」を付け加えてやればよい。なお、ディレクトリセパレータはWindowsではバックスラッシュだがMacではスラッシュなので、そこら辺はSystem.IO.Path.Combineメソッドに任せておいた方が無難だと思われる。
using System.IO;
using Foundation;
// 中略
var path = Path.Combine(NSBundle.MainBundle.BundlePath, "Contents", "Resources");
var file = "images-blue.png";
var image = new NSImage(Path.Combine(path,file));