質問: ### 前提・実現したいこと 自分の質問ではないですが、Xamarin.formsで画像を分割して読み込みたい と同様のことをしたいと思っています。 動機としては、すでにあるweb上の情報をアプリ化して表示する際に、(webViewを使えば特に考えることはなさそうですが)よりアプリらしくレイアウトを調整したく、同じ素材を使いたいため、cssと同じように位置とサイズを指定して画像の一部を表示したいと考えています。 ### 発生している問題・エラーメッセージ PCLだけでは実現できないことは理解しており、Objective-C や Javaで書いたライブラリとのBinding Libraryの仕組みを使えば良いのかなと考えているのですが、Objective-CやJavaからImageをどのように返せば良いかがわからなくて行き詰ってしまいました。 なにかアドバイスを頂きたく思います。 ### 試したこと Objective-C や Javaはあまり得意ではないのですが、それぞれ言語で部分表示ができることはテスト済みです。 また、Binding Libraryの仕組みもiOS / Androidともに理解しているつもりで、引数や戻り値に基本的な型(int, float, string)を使った関数呼び出しも問題なく動いています。(戻り値に配列を使うパターンはAndroidは動きましたが、iOSは調査中です) ### 補足情報(言語/FW/ツール等のバージョンなど) Xamarin.iOS イメージの描画 Xamarin.Android イメージの描画 Xamarin.Forms でプラットフォーム固有の機能を実装する(カスタムレンダラー編) などのサイトには目を通しており、もしかしたらBinding Libraryの仕組みを使わなくてもこのあたりの情報でなんとかなるのか?とも思っていますが、まだ答えは見つかっていません。 実際に使うときは、画像の読み込みのラグがあると思うので、非同期処理にしなければならないと考えていて、そこでまたハマるのではと思うのですが、まずは同期処理で考えています。 よろしくお願いします テスト環境: Xamarin 6.2(build 1829) Mac Note Pro OS X Yosemite(10.10.5)
回答: Java や Obj-C 製のライブラリを使うのが必須でないなら、 Binding Library は使う必要がないと思います。 具体的には、 > > Objective-C や Javaはあまり得意ではないのですが、それぞれ言語で部分表示ができることはテスト済みです。 > > > とのことですから、そのテスト実装を Xamarin.Android と Xamarin.iOS でそれぞれもう一度実装してみるとよいと思います。 その結果は、 Xamarin上での `Bitmap`(Android) や `UIImage`(iOS)になるでしょう。 最終的に、`Bitmap`(Android) と `UIImage`(iOS) を Xamarin.Forms で同じように扱うならば `ImageSource` を使う必要があります。 おそらく、 `Bitmap` と `UIImage` をそれぞれのネイティブ側で `byte`配列に変換し、 `ImageSource.FromStream` で読み込むことになると思います。