gpt4 book ai didi

c# - 用鼠标画矩形

转载 作者:行者123 更新时间:2023-12-04 02:15:24 24 4
gpt4 key购买 nike

有什么方法可以用起点和终点而不是起点和面积来绘制矩形吗?。我正在使用以下代码,通过鼠标在窗体上绘制矩形:

    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;
}

我可以用这段代码绘制矩形,当我将鼠标从起点移回时,矩形应该翻转,但我的矩形没有这样做,而是继续沿鼠标光标的相反方向绘制。简而言之,这段代码在向前绘制矩形时工作正常,但不适用于向后方向。

最佳答案

正如 Jamiec 所提到的,只需在 MouseMove 处理程序中调用 Invalidate,然后在 OnPaint 方法/Paint 中进行绘图 事件处理器

要向前或向后绘制正确的矩形,试试这个:

Rectangle rect = new Rectangle(Math.Min(e.X, initialX), 
Math.Min(e.Y, initialY),
Math.Abs(e.X - initialX),
Math.Abs(e.Y - initialY));

关于c# - 用鼠标画矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12672507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com