none
VisualのSnapshotをとりたい RRS feed

  • 質問

  • 現在以下のような状況になり、試行錯誤しています。
    どなたかご教授いただける方がいらっしゃいましたら、ぜひお願いいたします。

    ・画面上のコントロール(ImageやRectangle等)に対してVisualBrushを生成し、それをRectangleに設定して表示

    このとき、VisualBrushを生成する際の参照元になったデータが偏向されると、それを利用したRectangleの画像も更新されてしまいます。
    これを回避するにはどのような手段がのぞましいでしょうか?
    RenderTargetBitmapの使用も検討していますが、これを利用するとそれなりの処理時間がかかってしまい
    なるべくならほかの方法を選択したいところです。

    よろしくお願いします

    2009年8月9日 12:06

回答

  • RenderTargetBitmapを・・・と書こうとしたら、それではダメなんですね(^_^;

    (参考)
    http://blogs.msdn.com/hiroyuk/archive/2007/05/11/bitmapeffect-rendertargetbitmap.aspx

    参照元の変更で更新しないのであれば、RenderTargetBitmapは1回しか実行されないですから、そんなに遅くはならいような気がします。
    実際、上記の記事では、とても遅いBitmapEffectの高速化テクニックとして、RenderTargetBitmapを使いましょうというお話ですし。

    まずは、RenderTargetBitmapが必要以上にコールされていないかどうか確かめてみてはいかがでしょう。

    あと、RenderTargetBitmpを生成するときの解像度が適切かどうかも確認してみてください。
    解像度が必要以上に高いと、当然遅くなると思います。
    サムネイル的に表示したいだけなら、解像度を必要十分な値に下げてみるのも手かもしれません。
    • 回答としてマーク yakimaki 2009年8月9日 14:41
    2009年8月9日 13:45

すべての返信

  • RenderTargetBitmapを・・・と書こうとしたら、それではダメなんですね(^_^;

    (参考)
    http://blogs.msdn.com/hiroyuk/archive/2007/05/11/bitmapeffect-rendertargetbitmap.aspx

    参照元の変更で更新しないのであれば、RenderTargetBitmapは1回しか実行されないですから、そんなに遅くはならいような気がします。
    実際、上記の記事では、とても遅いBitmapEffectの高速化テクニックとして、RenderTargetBitmapを使いましょうというお話ですし。

    まずは、RenderTargetBitmapが必要以上にコールされていないかどうか確かめてみてはいかがでしょう。

    あと、RenderTargetBitmpを生成するときの解像度が適切かどうかも確認してみてください。
    解像度が必要以上に高いと、当然遅くなると思います。
    サムネイル的に表示したいだけなら、解像度を必要十分な値に下げてみるのも手かもしれません。
    • 回答としてマーク yakimaki 2009年8月9日 14:41
    2009年8月9日 13:45
  • NIM5さん
    ご教授ありがとうございます。
    RenderTargetBitmapの使用箇所について
    一度ソースを見直して最適化を図ってみたいと思います。

    参考になるURLまで教えていただいて、ほんとうにありがとうございましたm(_ _)m

    2009年8月9日 14:41
  • Window.Loaded イベントあたりで VisualBrush を Freeze したらいいんじゃないでしょうか?
    えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2009/12
    2009年8月9日 18:22