- - PR -
PictureBoxの描画範囲について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-07-26 02:17
いつもお世話になっております。
C# のPictureBox についての質問です。 やりたいことは、PictureBox のサイズ以上の描画領域に 描かれた図形なり何なりを、PictureBox の描画位置をずらして 表示したいということです。 例をあげると 100 X 100 のPictureBox を配置したとします。 そこに、始点(100,100)、終点(200,200)でラインを引きます。 このラインを引いた部分に描画範囲をあわせて PictureBox 内にぴったり表示させるというようなことは可能なのでしょうか? 若干わかりにくい文章ですいません。 ご教授よろしくお願い致します。 |
|
投稿日時: 2005-07-26 09:25
表示倍率を変えたいのでしょうか?
・ClientSizeと表示内容から表示倍率を求める。 ・表示倍率に応じて、座標計算して、内容の表示。 スクロールバーを出したい? ・panelを100x100にする。 ・panel内に、pictureBoxをDockFullで配置。 ・panelのAutoScrollをtrueにする。 ・pictureBoxのサイズを適宜(200x200)変える。 |
|
投稿日時: 2005-07-26 10:38
今日は
Pictureboxのサイズを変えずに、適当なImageをサイズ一杯に表示したいのなら PictureboxのSizeModeをStretchImageとし、 new BitMap(w,h)でBitmapを作りそれに任意の作図し、 PictureboxのImageに設定すれば出来ます。 |
|
投稿日時: 2005-07-26 21:22
ご返答ありがとうございます。
cats さんの一つ目の案とrvmx さんの言われてる 拡大縮小をかけて、サイズ内に収めるというのも 入れたい機能ではあります。 ただ、一番の目的は、catsさんの2つ目の案のように スクロールをさせることです。 そのときに、普通にスクロールバーでスクロールさせるのではなく PitcureBox 内でマウスをクリックしながら左右に動かして スクロールさせれればなかなかかっこいいなと思いまして。 そこで、第一歩として、描画範囲の始点と終点を手動でずらして Box 内に収まってない部分を表示させようと思ったわけです。 これは実際のところ可能なのでしょうか? よろしくお願いします。 |
|
投稿日時: 2005-07-26 21:59
今日は
マウスのイベントで移動座標を取得すれば簡単に出来ますよ。 最初はmousedownで、その後はmousemoveでButtonが押されていることを確認し 移動座標を求め、Imageの表示位置へ反映。 |
|
投稿日時: 2005-07-26 22:40
さっそくのレスありがとうございます。
Bitmap を自前で作成し、そこにDrawLine でラインを引いて PictureBox の Image に設定 というところまではやってみたのですが Image の表示位置へ反映というのはどのようにすればよいのでしょうか? 最初の書き込みを例にあげると、 PictureBox のサイズが 100 X 100 で Bitmap のサイズが 200 X 200 のところに、DrawLine で (100,100) から (200,200) にラインを引き、ラインがちょうどPictureBox 内に収まるように 表示位置を合わせるってとこですね。 今は自宅でプログラム環境がないため何も試していないのですが 方法が浮かばないのでとりあえず再度質問させていただきました。 失礼をして申し訳ありません。 よろしくお願いします。 |
|
投稿日時: 2005-07-27 04:54
今日は
DrawImageを使います、下記に例を示します。 Bitmap bm=new Bitmap(bmorg=元のImage); Graphics g=Graphics.FromImage(bm); g.DrawImage(bmorg,new Rectangle(0,0,pictureBox.Width,pictureBox.Height),100,100,100,100,System.Drawing.GraphicsUnit.Pixel); g.Dispose(); pictureBox.Image=bm; |
|
投稿日時: 2005-07-27 10:00
なるほど。
早速試してみます。 結果はまた報告させてもらいます。 ありがとうございます。 |