|
2008/11/05(Wed) 03:02:34 編集(投稿者) 2008/11/05(Wed) 02:50:20 編集(投稿者)
> 早速、やってみたのですが、 > public void DrawImage( > Image image, > Point[] destPoints, > Rectangle srcRect, > GraphicsUnit srcUnit > ) > の使い方がイマイチ分からず全然うまくいきません。 > > 例えば、上記のDrawImage()を使って、 > pcturebox(w=500, h=500)上の点(x=100, y=150)に > 描いた(w=50, h=30)のRectangleのセンター(x=125, y=165 ですよね?)を > pictureboxのセンター(x=250, y=250)に持って行って、 > 画像サイズは2倍(画像面積4倍)にするにはどうすればよいでしょうか? > > 本当にこれが分かれば後は自力でやろうと思いますので、 > どうかご教授お願いします。
Rectangleのセンターは、画像の座標でしょうか? pictureBoxの座標でしょうか? ごっちゃにしてはいけません。 画像の座標と仮定すると。
pictureBoxいっぱいに表示したいんですよね?
Point[] points = new Point[3]; points[0].X = 0; points[0].Y = 0; points[1].X = this.pictureBox1.Width; points[1].Y = 0; points[1].Y = 0; points[2].X = 0; points[2].Y = this.pictureBox1.Height; e.Graphics.DrawImage(img, points,imgRect,GraphicsUnit.Pixel);
後はrectangleの計算です。
> 描いた(w=50, h=30)のRectangleのセンター(x=125, y=165 ですよね?)を
いや、私に聞かれても。
imgRect.X = 125 - (pictureBox1.Width / 4); imgRect.Y = 165 - (pictureBox1.Height / 4); ; imgRect.Width = pictureBox1.Width / 2; imgRect.Height = pictureBox1.Height / 2;
拡大ボタンを押したら上記のようにimgRectを更新
もし、Rectangleのセンターが画像の座標じゃなかった場合、縮小と逆の計算をして、pictureboxの座標から画像の座標を求めてください。 > 追伸 > >描画ボタンを押した時に出来た画像が拡大するわけではなく、 > >また新たにズーム画像を生成して、その画像が先程の画像の上に描画されてしまうんです。 > > の件は、画像が下に残ってると縮小したときに煩わしいかなと思いまして;;
pictureBox1.Refresh(); ↑よべば一発です。
|