2016年06月19日
川俣晶の縁側ソフトウェア技術雑記total 823 count

UWPでRenderTargetBitmapが非同期で動作する罠

Written By: 川俣 晶連絡先

「ちょっとメモ」

「なんだい?」

「UWPにはRenderTargetBitmapというクラスがあってコントロールをレンダリングしたビットマップを作成してくれる」

「うん」

「ところが以下のように使うとpictureの中身をレンダリングしてくれない」

ResizedImage.Source = picture;

RenderTargetBitmap RenderImage = new RenderTargetBitmap();

await RenderImage.RenderAsync(ResizedImage);

「なぜ?」

「ResizedImage.Source = picture;を実行しても、ソースが指定されるだけで即座に画面に反映されるわけではないのだ。そして、RenderAsyncメソッドは今現在画面に見えているものをビットマップにレンダリングする」

「つまり、非同期で動作するから完了を待たずにレンダリングしても意味が無いわけだね」

「そうだ」

「じゃあさ。レンダリングの終了イベントを受け取ってから実行すればいいじゃないか」

「実は、ロード終了を示すイベントまでは把握できたが、既に読み込み済みの画像オブジェクトをソースに指定する場合はイベントが起きないようだ」

「じゃあ、どれを使えばいいの?」

「分からない。分からないので、取りあえず問題をメモだ」

暫定解決策 §

「暫定的には以下の箇所に時間待ちを入れると動く」

「どれぐらい?」

「100ms待たせれば動いたが、それははたして全てのマシンで有効な値か分からない」

「じゃあどう解決した」

「取りあえずボタン押すのを待たせたよ」

ResizedImage.Source = picture;

(時間待ち)

RenderTargetBitmap RenderImage = new RenderTargetBitmap();

await RenderImage.RenderAsync(ResizedImage);

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2016年
06月
24日
PR-400KIのVPNへWindows 10(おそらく8/8.1でも同様)から接続できない問題と解決
3days 0 count
total 1428 count
【技術雑記】の前のコンテンツ
2016年
06月
16日
TFSからgit/Visual Studio Onlineへの移行を行ってみての私的感想と特徴比較
3days 0 count
total 2305 count
2016年06月19日
川俣晶の縁側ソフトウェア技術雑記total 823 count

UWPでRenderTargetBitmapが非同期で動作する罠

Written By: 川俣 晶連絡先

「ちょっとメモ」

「なんだい?」

「UWPにはRenderTargetBitmapというクラスがあってコントロールをレンダリングしたビットマップを作成してくれる」

「うん」

「ところが以下のように使うとpictureの中身をレンダリングしてくれない」

ResizedImage.Source = picture;

RenderTargetBitmap RenderImage = new RenderTargetBitmap();

await RenderImage.RenderAsync(ResizedImage);

「なぜ?」

「ResizedImage.Source = picture;を実行しても、ソースが指定されるだけで即座に画面に反映されるわけではないのだ。そして、RenderAsyncメソッドは今現在画面に見えているものをビットマップにレンダリングする」

「つまり、非同期で動作するから完了を待たずにレンダリングしても意味が無いわけだね」

「そうだ」

「じゃあさ。レンダリングの終了イベントを受け取ってから実行すればいいじゃないか」

「実は、ロード終了を示すイベントまでは把握できたが、既に読み込み済みの画像オブジェクトをソースに指定する場合はイベントが起きないようだ」

「じゃあ、どれを使えばいいの?」

「分からない。分からないので、取りあえず問題をメモだ」

暫定解決策 §

「暫定的には以下の箇所に時間待ちを入れると動く」

「どれぐらい?」

「100ms待たせれば動いたが、それははたして全てのマシンで有効な値か分からない」

「じゃあどう解決した」

「取りあえずボタン押すのを待たせたよ」

ResizedImage.Source = picture;

(時間待ち)

RenderTargetBitmap RenderImage = new RenderTargetBitmap();

await RenderImage.RenderAsync(ResizedImage);

Facebook

キーワード【 川俣晶の縁側ソフトウェア技術雑記
【技術雑記】の次のコンテンツ
2016年
06月
24日
PR-400KIのVPNへWindows 10(おそらく8/8.1でも同様)から接続できない問題と解決
3days 0 count
total 1428 count
【技術雑記】の前のコンテンツ
2016年
06月
16日
TFSからgit/Visual Studio Onlineへの移行を行ってみての私的感想と特徴比較
3days 0 count
total 2305 count
【技術雑記】のコンテンツ全リスト【技術雑記】の表紙

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20160619180932
サイトの表紙【技術雑記】の表紙【技術雑記】のコンテンツ全リスト 【技術雑記】の入手全リスト 【技術雑記】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.25 (Alpha-Test) Copyright (c) 2004-2017 Pie Dey.Co.,Ltd.