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

わんくま同盟

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

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

■92338 / 親階層)  PictureBoxに高速で画像を表示するコツ
□投稿者/ ママ (1回)-(2019/09/11(Wed) 11:46:27)

分類:[.NET 全般] 

複数のPictureBoxに高速(30〜60 fps)で画像を表示するプログラムを作成しています。


画像と元となるデータを動的にバックグラウンドで生成し、
BeginInvokeで

PictureBox1.Image = bmp1
のようにしてデータを渡しています。

ここで気になるのは

ウインドウサイズを変更してもイメージもリサイズされるように


PictureBox1.SizeMode = PictureBoxSizeMode.Zoom

の設定で行っています。

そのため、GUIスレッドで画像のピクセル補間が行われるため、
高速表示した時にPictureBoxによって画像が表示されるタイミングが違ったりしてしまいます。

そのため、バックグラウンドプロセスでピクセル補間も行った上で
GUIスレッドに渡す必要があります。


そのプログラムを自前で書いており以下のようになりました。


Dim Width3 As Integer
Dim Height3 As Integer


' イメージの上下に余白ができる場合
If Width2 / Height2 >= PBox.ClientSize.Width / PBox.ClientSize.Height Then

Width3 = PBox.ClientSize.Width
Height3 = CInt(Width3 / Width2 * Height2)

' イメージの左右に余白ができる場合
Else

Height3 = PBox.ClientSize.Height
Width3 = CInt(Height3 / Height2 * Width2)

End If


Dim canvas As New Bitmap(Width3, Height3)

ここで一つ気になるのは、
PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
と設定してあったとして
PictureBoxのサイズに合致するイメージが渡された時に
補間処理は全く行われていないのでしょうか?

スケール比が1として計算されていたりしませんか?


あと、PictureBoxに高速で画像を表示する上で
処理を軽くするためのコツなどございましたら
お教え願えないでしょうか?


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: PictureBoxに高速で画像を表示するコツ /とっちゃん
 
上記関連ツリー

PictureBoxに高速で画像を表示するコツ / ママ (19/09/11(Wed) 11:46) #92338 ←Now
Re[1]: PictureBoxに高速で画像を表示するコツ / とっちゃん (19/09/11(Wed) 14:00) #92345

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信