gpt4 book ai didi

c# - 如何画一条可选择的线?

转载 作者:行者123 更新时间:2023-11-30 17:21:17 26 4
gpt4 key购买 nike

我想创建一个应用程序,用户可以操纵他画的线。诸如删除线或选择线之类的东西。我应该怎么做?

提前致谢


我设法使用硬编码矩形来做到这一点。但我仍然不知道如何使用 drawLine() 执行此操作 我可以使用 drawPath 进行 HitTest 吗?

代码如下:

private bool selectGraph = false;
private Rectangle myrec = new Rectangle(50, 50, 100, 100);
private Graphics g;

private void panel1_Paint(object sender, PaintEventArgs e)
{
SolidBrush sb = new SolidBrush(Color.Blue);
Pen p = new Pen(Color.Blue, 5);

e.Graphics.DrawRectangle(p, myrec);
e.Graphics.FillRectangle(sb, myrec);
}

private void panel1_MouseUp(object sender, MouseEventArgs e)
{
Point mPT = new Point(e.X, e.Y);

if (e.Button == MouseButtons.Left)
{
if (myrec.Contains(mPT))
{
selectGraph = true;
button1.Enabled = true;
}
else
{
selectGraph = false;
button1.Enabled = false;
}
}
Invalidate();
}

最佳答案

那么你可以从一个简单的 Line 类开始:

public class Line
{
public Point Start { get; set; }
public Point End { get; set; }
}

然后你可以得到你的表单:

private Line Line = new Line();

protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawLine(Pens.Red, this.Line.Start, this.Line.End);
}

protected override void OnMouseMove(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Line.Start = e.Location;
this.Refresh();
}
else if (e.Button == MouseButtons.Right)
{
this.Line.End = e.Location;
this.Refresh();
}
}

所以基本上他们可以删除 this.Line 可能是在“MiddleButton”点击或其他东西上。这应该足以让您入门。

我已经 created a sample这说明了如何做到这一点。设置一些断点,看看事情是如何完成的。

关于c# - 如何画一条可选择的线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3597069/

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