タイトル | : Re: pictureboxの高速描画 |
記事No | : 5876 |
投稿日 | : 2007/07/20(Fri) 11:25 |
投稿者 | : 魔界の仮面弁士 |
> VB6ではscalemodeに「twip」がありました。これだと結構速く表示されていました。 > しかし、2005はピクセルしか対応していないようです。
Dim bmp0, bmp1, bmp2 As Bitmap Dim g0, g1, g2 As Graphics
bmp0 = New Bitmap(100, 100) bmp1 = New Bitmap(100, 100) bmp2 = New Bitmap(100, 100) g0 = Graphics.FromImage(bmp0) g1 = Graphics.FromImage(bmp1) g2 = Graphics.FromImage(bmp2)
'単位系の変換 g1.ScaleTransform(0.2F, 0.2F) g2.ScaleTransform(5.0F, 5.0F)
'単位系が変更されているので、下記はすべて異なるスケーリングになる g0.DrawLine(Pens.Red, 1, 1, 20, 20) g1.DrawLine(Pens.Red, 1, 1, 20, 20) g2.DrawLine(Pens.Red, 1, 1, 20, 20)
g0.Dispose() g1.Dispose() g2.Dispose()
bmp0.Save("C:\a.png") bmp1.Save("C:\b.png") bmp2.Save("C:\c.png")
bmp0.Dispose() bmp1.Dispose() bmp2.Dispose()
> 全画面を表示する時もあるためその時は更に遅くなります。 全画面? UXGA のモニタでも1600×1200ドットですし、 10,000ドット×10,000ドットの画像を、一度に表示はできませんよね。
# 3840×2400クラス(QUXGA/Wide)でマルチモニタを組めば何とか表示できる?
> また、CやVC2005で組むと表示関連は関連されるのでしょうか? 言語ではなく、実装を見直さないと駄目かと思います。 よねKENさんが書かれているように、「画面に表示する分だけ描画」するとか、 あるいは画像を一度に読み込まず、幾つかの小さな画像に分割して処理するとか。
|