- PR -

スクロール可能なWindow

1
投稿者投稿内容
みけ
会議室デビュー日: 2002/07/25
投稿数: 14
投稿日時: 2004-03-17 02:19
C#にて、MFCのCScrollView やJAVASwingのScrollPane を使うのと似たような感覚で
大きな図面をスクロールして表示するにはどうしたらよいのでしょう?

Panelの内部にPictureBoxを埋め込み、そこに描画することも考えたのですが、
Pictureboxのサイズの上限が32767になっているようで使えませんでした。

CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-03-17 03:21
こんにちは。

スクロールバーを自分で用意すれば、できそうな気がします。
スクロールバーの値を取得して、表示部分だけを取り出してPictureBoxか
何かに表示すれば、でっかい画像でもストレスなくスムーズにやれると思います。

_________________
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-03-17 09:55
 ん?手元のペイントソフトでは、15000*15000までしか作れないが、それでもRGB8ビットで659,179KByte必要だといっている。。。


 文字だけで説明するのは難しい。

 Panelに、System.Windows.Forms.HScrollBarと、VScrollBarを追加します。詳細はそれぞれのマニュアルを見てください。最大を「図面」の最大に設定しておきます。
 PictureBoxには、「図面」のうち、Valueで示されるところから、表示しなければならない大きさだけ、描画します。つまり、大きな図面すべてを最初から表示するのではなく、ユーザが見ている部分だけを、ピンポイントで描画します。
 ScrollBarの、Scrollイベントが発生したら、描画する領域を描き直します。

 このとき、よりスムーズにスクロールさせるために、描画領域以上の「予備表示領域」を持っていたり、描画をスレッドで行ったり、2枚のPictureBoxを交互に表示させたり、、、など、ちょっとした細工をします。


[ メッセージ編集済み 編集者: Jitta 編集日時 2004-03-17 09:59 ]
みけ
会議室デビュー日: 2002/07/25
投稿数: 14
投稿日時: 2004-03-19 11:42
どうもありがとうございました。

たしかに、縦、横のスクロールバーを別で作成して、細かい制御はこっちで
やればいいんですねm(__)m

> ん?手元のペイントソフトでは、15000*15000までしか作れないが、それでもRGB8ビットで>659,179KByte必要だといっている。。。
実際、やりたいのはCADのような図面(画像ではないんですが)の表示と編集機能なので
サイズの上限を 32767に限定したくなかったんです。

1

スキルアップ/キャリアアップ(JOB@IT)