C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.70058 の関連記事表示

<< 0 >>
■70058  WPFでBitmapを高速転送
□投稿者/ 雲 -(2014/02/22(Sat) 10:29:30)

    分類:[.NET 全般] 

    こんにちは。

    現在、WPFでSystem.Windows.Media.Imagingのsource に対して、WritableBitmap でBitmap画像を指定しています。
    (Bitmap のサイズは、4000 x 7000pixel)

    で、WritableBitmapの変更内容をBackBuffer に書き込んで(画像サイズは変わらない)、Update をしたところ、
    描画されるまでに、約1秒(Windows7 64bit, Core2Quad 2.66GHz, 8GB)かかります。

    スライダで画像を切り替えながら表示したいのですが(全ての画像サイズは同一)、描画に1秒もかかるとなると
    ちょっと、考えてしまいます。

    調べたところでは、WPFの限界ということみたいですが、何か、方法は無いものでしょうか?

    個人的に思いつくのは、Win32APIのBitBltを使って転送(スクロールも自前)ぐらいですが、何とかWPFの範囲内で出来る方法が
    あれば良いなと思っています。

    よろしくお願いします。
親記事 /過去ログ119より / 関連記事表示
削除チェック/

■70081  Re[1]: WPFでBitmapを高速転送
□投稿者/ たくボン -(2014/02/24(Mon) 02:11:58)
    No70058 (雲 さん) に返信
    > こんにちは。
    >
    > 現在、WPFでSystem.Windows.Media.Imagingのsource に対して、WritableBitmap でBitmap画像を指定しています。
    > (Bitmap のサイズは、4000 x 7000pixel)

    大きな画像を劣化なしに描画するならWPFでも限界があると思います。
    以前私がスキャナから高解像度のビットマップを処理するアプリを作成した場合も似たような問題があったので、BitBltを使用しました。
    スクロールも実装したいようなので、内部で表示用のBitmapを保持しておき、クリッピングした領域のみ描画することで高速な描画が可能です。
    上記のアプリの時は、拡大・縮小、回転もサポートしたので、内部では3段階のバッファリングを行い、その上に独自のレイヤーをいくつも描画していましたが、当時のPCでもストレスなく描画できました。

    市販や既存のコントロールは汎用的なので、目的のパフォーマンスが出せないなら作成するしかないと思います。
    使用されているPCはスペックも良いので目的のパフォーマンスは出せると思います。
記事No.70058 のレス /過去ログ119より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -