- - PR -
スクロール可能なWindow
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-03-17 02:19
C#にて、MFCのCScrollView やJAVASwingのScrollPane を使うのと似たような感覚で
大きな図面をスクロールして表示するにはどうしたらよいのでしょう? Panelの内部にPictureBoxを埋め込み、そこに描画することも考えたのですが、 Pictureboxのサイズの上限が32767になっているようで使えませんでした。 |
|
投稿日時: 2004-03-17 03:21
こんにちは。
スクロールバーを自分で用意すれば、できそうな気がします。 スクロールバーの値を取得して、表示部分だけを取り出してPictureBoxか 何かに表示すれば、でっかい画像でもストレスなくスムーズにやれると思います。 _________________ |
|
投稿日時: 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 ] |
|
投稿日時: 2004-03-19 11:42
どうもありがとうございました。
たしかに、縦、横のスクロールバーを別で作成して、細かい制御はこっちで やればいいんですねm(__)m > ん?手元のペイントソフトでは、15000*15000までしか作れないが、それでもRGB8ビットで>659,179KByte必要だといっている。。。 実際、やりたいのはCADのような図面(画像ではないんですが)の表示と編集機能なので サイズの上限を 32767に限定したくなかったんです。 |
1