Bitmapイメージにテキスト文字列を書き込む2018年03月21日 13:58

UWPアプリにて、テキスト文字列を書き込んだBitmapイメージを得るには、RenderTargetBitmapが使えるが、UI上に表示されているものでないと生成できない。

素のイメージなら、pixelデータを格納したbyte配列を用意し、WritebleBitmapにstream経由で流し込み、できあがったWritableBitmapのPixelBufferからSoftwareBitmapを生成できる。では、テキスト文字列をどう書き込むか。

Win2Dのパッケージを用いると、このあたり解決できそう。

ここでは、Bitmapイメージを得て、Clipboardにイメージデータとしてコピーする。

Bitmap上にテキスト文字列を書き込む

220行;CanvasDeviceを生成。実際のCanvasの代わり。
221行;CanvasRenderTargetを生成。SoftwareBitmapの代わり。最初の引数のICanvasResourceCreatorに一つ前で作成したCanvasDeviceが使えるのがポイント。
223行以下;テキスト文字列の準備
245行;Win2Dでは、DrawXXXは、イベントハンドラの中で用いるのだが、マニュアルでSessionを作成することもできる。Win2DのArticlesの"Offscreen drawing"にあるとおり。
260行;Bitmap書き出し先のRandomAccessStreamを生成。
262行;書き出しの実施。BitmapEncoderのFlushAsyncの代わり。ファイルへの書き出しもできる。この先、BitmapDecoderにつなげてもよい。
268行;RandomAccessStreamReferenceを生成。Clipboardにデータを渡すDataPackageはこの型を要求する。
269行;DataPackageに、Bitmapイメージを供給するRandomAccessStreamReferenceを設定。

色タイル

実際にクリップボードにコピーされたBitmapイメージをペイントソフトでクリップボードから貼り付けたようす。