gpt4 book ai didi

c# - 如何选择和 move 图片框中的矩形?

转载 作者:太空宇宙 更新时间:2023-11-03 11:15:44 24 4
gpt4 key购买 nike

只是想知道我将如何实际选择我绘制的矩形然后能够 move 它?我还需要删除它,但我可以解决那部分问题。只是有点迷失了我需要做什么。伪代码或实际代码都可以,我们将不胜感激。

此外,如果其他人知道如何在 listBox 中实际显示矩形 X 和 Y,那也很好。但目前,最重要的问题是优先级。

这是我绘制矩形的方式:

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{

if (buttonDown)
{
if (pictureBox1.Image != null)
{
draw = true;
Graphics g = Graphics.FromImage(imageFile);
Pen pen1 = new Pen(color, 4);
g.DrawRectangle(pen1, e.X - 5, e.Y - 5, 5, 5);
g.Save();
pictureBox1.Image = imageFile;
}
}
}

最佳答案

为了实现这种行为,您必须存储有关矩形的信息。例如。在这样的类中:

class Rect
{
int X { get; set; }
int Y { get; set; }
int Width { get; set; }
int Height { get; set; }
}

请注意,已经有一个 Rectangle 类型。您也可以使用它,但由于它是一个结构,因此您必须以不同方式处理选择。

现在您可以创建一个矩形列表和选择:

List<Rect> rects = new List<Rect>();
Rect selectedRect = null;

在列表框中显示这些矩形非常容易。只需将列表框的项目绑定(bind)到列表即可。您可能需要覆盖 ToString() 以获得用户友好的输出。

绘制矩形可能如下所示:

foreach(var r in rects)
{
g.DrawRectangle(pen1, r.X, r.Y, r.Width, r.Height);
...
}

您可以突出显示所选的矩形。例如。用不同的笔或周围的另一个矩形:

if(selectedRect == r)
g.DrawRectangle(pen1, r.x - 5, r.Y - 5, r.Width + 10, r.Height + 10);

MouseDown 事件或其他适当的事件中,您可以将选择设置为单击的矩形:

foreach(var r in rects)
if(e.X >= r.X && e.X <= r.X + r.Width && e.Y >= r.Y && e.Y <= r.Y + r.Height)
selectedRect = r;

要 move 矩形,您需要保存被点击的矩形点(距左上角的距离)。在鼠标 move 事件中,检查左键是否按下并相应地重新定位 selectedRect

关于c# - 如何选择和 move 图片框中的矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12703402/

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