none
ストアアプリで、あるUIElementの内容を別のUIElementに描画したり画像に落とすには。 RRS feed

  • 質問

  • WPFではVisualBrushなどを使用してタイトルにあるようなことができたと思いますが、ストアアプリだとどのようにすべきでしょう?

    具体的な使用目的としてはたとえばペイントアプリなどで

    ①絵のある領域を拡大して表示する。

    ②描いた絵の内容をサムネイルにして絵の選択の際に使う。

    です。

    ①はVisualBrush的なものがなければ同じModelを通常のものと拡大用の二つのViewから参照するようにすればいけると思いますが、VisualBrush的なものがあればより負荷が低そうな。

    ②の方は検索するにしてもとっかかりがわからず、方法を探せないでいます。

    何かヒントのようなものでもいいのでアドバイスいただけると助かります。

    よろしくお願いします。


    cyclops


    • 編集済み cyclops2 2013年7月29日 2:03
    2013年7月28日 17:22

回答

  • Windows 8.1 の Windows Runtime には、RenderTargetBitmap が新設されます。
    簡単にビジュアル・ツリーの画像を取得できるようになります。
    参考blog記事: [win8.1] RenderTargetBitmapクラスで、XAMLをビットマップ形式で保存する - Moonmile Solutions Blog

    近々8.1がリリースされると言われており、無償のバージョンアップですから、公開されれば8.1への移行は速やかに進むと予想されます。8.1を待てるかどうか、また、すぐに少数派となるだろう8.0をサポートすべきかどうか、悩ましいところだとは思います。

    なお、UIElement を丸ごと画像にする必要がない場合は、西村さんの言うように WiteableBitmapEx が常套手段です。


    biac [ http://bluewatersoft.cocolog-nifty.com/ ]

    • 回答としてマーク 星 睦美 2013年7月30日 1:12
    2013年7月29日 9:00

すべての返信

  • cyclops様

    こんにちは西村と申します。

    ストアアプリでUIElementを画像に変換するライブラリとして以下が開発中状態です。

    しかし、対応するUIElementが一部であり、開発中ということもあり参考程度という形です。

    WinRT XAML Toolkit - Composition

    http://www.nuget.org/packages/WinRTXamlToolkit.Composition/

    UIElementを丸ごと画像にする必要がない場合はWiteableBitmapクラスで画像を加工すると良さそうですね。

    その場合はWriteableBitmapEx(http://writeablebitmapex.codeplex.com/)が便利です。

    よろしくお願いいたします。

    2013年7月29日 4:23
  • Windows 8.1 の Windows Runtime には、RenderTargetBitmap が新設されます。
    簡単にビジュアル・ツリーの画像を取得できるようになります。
    参考blog記事: [win8.1] RenderTargetBitmapクラスで、XAMLをビットマップ形式で保存する - Moonmile Solutions Blog

    近々8.1がリリースされると言われており、無償のバージョンアップですから、公開されれば8.1への移行は速やかに進むと予想されます。8.1を待てるかどうか、また、すぐに少数派となるだろう8.0をサポートすべきかどうか、悩ましいところだとは思います。

    なお、UIElement を丸ごと画像にする必要がない場合は、西村さんの言うように WiteableBitmapEx が常套手段です。


    biac [ http://bluewatersoft.cocolog-nifty.com/ ]

    • 回答としてマーク 星 睦美 2013年7月30日 1:12
    2013年7月29日 9:00
  • 今回使う用途としてはToolkit-Compositionが使いたいUIElementもカバーされているようなのですが、DirectXもからんでるんでしょうか、いろいろと大事になりそうな感じですね。

    WritableBitmapExはサンプルにあるような高パフォーマンスな描画をさせるときに有用そうです。

    今回の用途としてはbiacさんの言われるRenderTargetBitmapが適当そうですが、アドバイスありがとうございました。


    cyclops

    2013年7月29日 9:42
  • 私の用途ですと8.1を待ってRenderTargetBitmapを使うのが一番適当そうですね。

    8.1への移行は比較的速やかでしょうから8.0への対応は考えないこととします。まだ開発にも時間かかりそうですし…

    ほかの開発の兼ね合いもあって環境の構築に難がありますが、試してみたいと思います。

    ありがとうございました。


    cyclops

    2013年7月29日 9:43