質問: UIImage.FromFile("Images/1.png"); // nullになってしまう ``` Xamarin.iOSですが、VisualStudioやC#寄りの質問かなと思ってタグに追記しています。 ◆目的 ・Xamarin.iOSのプロジェクトとWindowsFormのプロジェクトから共通プロジェクト内にある画像を読み込みたい。 ・画像はファイル実体にアクセスではなくResources内にある埋め込みされたファイルアクセスのように扱いたい。 ◆環境 Visual Studio 2019 Xamarin 16.1 Xamarin.iOS 12.10 実機iPadのiOS 12.3
回答: 試しにプロジェクト作ってみました。 共有プロジェクトが `ImageRefSample` という名前で、その中に `myprof.png` が **埋め込みリソース** として追加されているという前提で、アプリ側のコードは次のようになります。 ``` // 他のプロジェクトにある型からアセンブリを取得 var assembly = typeof(MyClass).GetTypeInfo().Assembly; // 一応埋め込みリソースをリストアップ foreach (var res in assembly.GetManifestResourceNames()) { System.Diagnostics.Debug.WriteLine("found resource: " + res); } // ImageRefSample プロジェクトの myprof.png を読み込み using (var stream = assembly.GetManifestResourceStream("ImageRefSample.myprof.png")) { var imageData = Foundation.NSData.FromStream(stream); var image = UIImage.LoadFromData(imageData); image1.Image = image; } ``` 端的に言えば、 `typeof(<共有プロジェクトにあるクラス>).GetTypeInfo().Assembly.GetManifestResourceStream("<共有プロジェクト名.画像ファイル名>")` で、画像データを Stream として読み出せるので、後はプラットフォーム側でよしなに利用するだけです。