DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Panel 上の PictureBox のスクロール スピード

  • 題名: Panel 上の PictureBox のスクロール スピード
  • 著者: kait
  • 日時: 2004/11/05 19:00:43
  • ID: 7190
  • この記事の返信元:
    • (なし)
  • この記事への返信:
    • (なし)
  • ツリーを表示
環境/言語:[WinXP, Pentium 4, C#, .NET1.1]
分類:[.NET]

2004/11/05(Fri) 19:02:44 編集(投稿者)

お世話になります。

Visual C++ 6 (MFC) にて、SDI で CScrollView を継承したビューに
画像を表示するアプリケーションを作ったことがあります。

それを .NET + C# に移植してみようと思っているのですが、
.NET での実装方法として Panel (AutoScroll を true) の上に
PictureBox を乗せてみました。表示方法は次の 2 つ試しました。

方法 (1) Image プロパティに Bitmap を設定
this.pictureBox1.Image = new Bitmap(filename);

方法 (2) PictureBox の Paint イベントにて、PictureBox の Graphics に DrawImage
// コンストラクタで private Image image = Bitmap(filename) で読み込んであります
e.Graphics.DrawImage(this.image, 0, 0, this.image.Width, this.image.Height);
this.pictureBox1.Size = this.image.Size;

両方の場合とも、見た目は Visual C++ 6 で作成したものと同じ
なのですが、スクロールバーをスクロールさせたときのスピードが
遅いのです。

Visual C++ のものより (タスクマネージャの CPU 使用率を見る限りで)
10 倍かそれ以上くらい遅いです。

画像の読み込みはコンストラクタでおこなっており、これ以上
高速化できないようなのですが、もっと高速化するには
どうすればよいでしょうか?

Visual C++ 6 では CView::OnDraw にて CDC::BitBlt で
描画しています。

よろしくお願いします m(_ _)m

DOBON.NET | プログラミング道 | プログラミング掲示板