開始点と領域の代わりに開始点と終了点で Rectangle を描画する方法はありますか? 次のコードを使用して、マウスでフォームに四角形を描画しています。
System.Drawing.Graphics formGraphics;
bool isDown = false;
int initialX;
int initialY;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
isDown = true;
initialX = e.X;
initialY = e.Y;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (isDown == true)
{
this.Refresh();
Pen drwaPen = new Pen(Color.Navy,1);
int width = e.X - initialX, height = e.Y - initialY;
//if (Math.Sign (width) == -1) width = width
//Rectangle rect = new Rectangle(initialPt.X, initialPt.Y, Cursor.Position.X - initialPt.X, Cursor.Position.Y - initialPt.Y);
Rectangle rect = new Rectangle(initialX, initialY, width * Math.Sign(width), height * Math.Sign(height));
formGraphics = this.CreateGraphics();
formGraphics.DrawRectangle(drwaPen, rect);
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
isDown = false;
}
このコードで四角形を描画できます。マウスを開始点から戻すと、四角形は反転するはずですが、これを行う代わりに、四角形はマウスカーソルの反対方向に描画し続けます。要するに、このコードは順方向に四角形を描画している間は正常に機能しますが、逆方向には機能しません。