酢ろぐ!スマートフォン用の表示で見る酢ろぐ!カレーが嫌いなスマートフォンアプリプログラマのブログ。さんから以下の質問を頂いておりました。@ch3coohはじめましてブログを拝見してもしかしたらなと思い質問させてもらいます。@ch3cooh@ch3coohいくつかの小さい画像データを合成し画像を生成しようとしているのですがwriteablebitmap.blitでは千の処理は負荷がかかるようで他にストアアプリで使用できる方法があればご教示お願いしたいです。@ch3coohちょうど寝ていた時間帯だったのですぐに返事をすることができなくて、前後のツイートを見てもどういう状況かわからなかったので半分以上推測です。こんなことをしたいんだろうなぁーと仮説を立てて、その対策を書きたいと思います。認識違いしてたらごめんなさい。仮説:いくつかの小さい画像データを合成し画像を生成したいここから本編。下図のようにWriteableBitmapを複数枚用意していて、それらすべての画像を合成したいと解釈しました。「わーっ」と描かれたセリフ画像と「滑っているネコ」が描かれている画像を1つの画像として合成したいのかな......と。Japanでのセカンダリ・タイルの作成方法を「WriteableBitmapを使ってBackground.pngの背景色を変更する」のように、ピクセル単位での処理をおこなっているのだと推測しました。WriteableBitmapクラスには、WriteableBitmap.Blitといういかにもピクセル処理してますよというメソッドはないので、おそらくWriteableBitmapExを使っているのかもしれません。僕も過去にBlitメソッドには頭を傷めた記憶があります。8.0向けのWindowsストアアプリでは、確かに画像の合成はその方法しかありませんでした。Phoneからアプリの移植を諦めた人も多かったのではないでしょうか。Phoneの方法とはかなり異なるのですが)UIElementからビットマップを生成する方法としてRenderTargetBitmapクラスが提供されています。このエントリで紹介する複数の画像を合成する方法このエントリでは、RenderTargetBitmapクラスを使って複数の画像を合成する方法を紹介しましょう。RenderTargetBitmapクラスの使い方、注意点は既に先達の方々が書いてくださっています。Studioを起動して、プロジェクトウィザードから一番シンプルな「新しいアプリケーション」を選択します。適当にButtonと合成後の画像を格納するためImageを配置しました。MainPage.xamlは以下のようになりました。</Grid></Page>このXAMLでもっとも重要なことは、Pageの子要素のGridにLayoutRootと名前を付けていることです。RenderTargetBitmapを使う上で重要な要素になります。複数の画像をRenderTargetBitmapクラスを使って合成する少し冗長なコードになってしまったので、番号を振って説明していきたいと思います。合成するベースとしてGridを生成して、複数のImageをGridに追加していく一時的にLayoutRootにGridを追加して、RenderTargetBitmapを使ってビットマップにUIElementをレンダリングするレンダリングされたビットマップを再度WriteableBitmapに変換して表示この手順を想像して頂いた上でコードを読んでみてください。outputBitmap;}実行すると下図のようにセリフとネコの画像が1つに合成されます。おまけ今回ヘルパー的に使用したメソッドが2つあります。メソッドコードの中にできるだけ説明を書いたので使い方はお察しください。pixels);}まとめ僕の書いたネコは、ひょっとしてかわいいかもしれません。