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

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

C# と VB.NET の入門サイト

Re[1]: WPFでBitmapを高速転送


(過去ログ 119 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■70058 / inTopicNo.1)  WPFでBitmapを高速転送
  
□投稿者/ 雲 (1回)-(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の範囲内で出来る方法が
あれば良いなと思っています。

よろしくお願いします。

引用返信 編集キー/
■70081 / inTopicNo.2)  Re[1]: WPFでBitmapを高速転送
□投稿者/ たくボン (5回)-(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はスペックも良いので目的のパフォーマンスは出せると思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -