C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 113 を表示中)
■66739 / )  Rectangleの領域設定に変数は使用可能?
□投稿者/ mako_chan3 (11回)-(2013/05/21(Tue) 18:10:30)

分類:[C#] 

環境はVisualStudio2010です。

「pictureBox_MouseClickイベントで元画像をクリックした位置を(x、y)として取り込み、
 Rectangle srcRect = new Rectangle(x - 60, y - 30, x + 20, y + 10); で元画像の切り取り範囲を決定し、
 Rectangle desRect = new Rectangle(0, 0, srcRect.Width, srcRect.Height); で描画する部分の範囲を決定する。」
と考えました。
3行目のsrcRect.WidthとsrcRect.Heightの値はそれぞれ80と40を期待したのですが、デバッグしてみるとx+80とy+60の値が格納されていました。
これは何か使い方が間違っているのでしょうか。

ソースは下記の通りです。◆のところです。

//button1のClickイベントハンドラです。
private void button1_Click(object sender, EventArgs e)
{

( 省略 )

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Bitmap img = new Bitmap(openFileDialog1.FileName); //画像ファイルのImageオブジェクトを作成します。

pictureBox1.Image = img;
}

}

//pictureBox1のMouseClickイベントハンドラです。
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
int x = e.X;
int y = e.Y;

Bitmap img = (Bitmap)pictureBox1.Image; //元画像のImageオブジェクトを作成する。
Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height); //描画先とするImageオブジェクトを作成。
Graphics g = Graphics.FromImage(canvas); //ImageオブジェクトのGraphicsオブジェクトを作成。

◆Rectangle srcRect = new Rectangle(x - 60, y - 30, x + 20, y + 10); //切り取る部分の範囲を決定する。
◆Rectangle desRect = new Rectangle(0, 0, srcRect.Width, srcRect.Height); //描画する部分の範囲を決定する。ここでは、(0,0)の位置に描画する。

g.DrawImage(img, desRect, srcRect, GraphicsUnit.Pixel); //切り取った画像を描画する。

g.Dispose(); //Graphicsオブジェクトのリソースを開放する。

pictureBox2.Image = canvas; //pictureBox2に描画する。
}
返信 編集キー/


管理者用

- Child Tree -