如何实例化图像时,用户点击在windows窗体

本文关键字:windows 窗体 用户 实例化 图像 | 更新日期: 2023-09-27 18:08:52

我有一个小的圆形图像,我想做如下:

每当窗体上的某个位置被点击时,如果那里没有其他圆圈,我想在那个位置添加一个新的圆圈实例

我正在考虑一个圆圈列表,当点击发生时,我检查列表,看看是否没有圆圈重叠,然后添加一个新的,但我没有任何表单的经验,所以我不知道什么是最好的方法。

如何实例化图像时,用户点击在windows窗体

您可以创建一个GraphicsPath,并使用IsVisible方法检查点击点是否在其任何部分内。

这段代码还构建了一个点列表,并在Paint事件中为每个点绘制图像。如果你让GraphicsPath做绘图,你取消注释DrawPath行,并删除这些//**列表相关的行。

GraphicsPath GP = new GraphicsPath();
List<Point> PL = new List<Point>();    //**
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
    int diameter = 22;  // put in the size of your circle
    Size s = new Size(diameter, diameter);
    if (!GP.IsVisible(e.Location))
    {
        Point middle = new Point(e.X - diameter / 2, e.Y - diameter / 2);
        GP.AddEllipse(new Rectangle(middle, s));
        PL.Add(middle);    //**
    }
    this.Invalidate();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
    // e.Graphics.DrawPath(Pens.Firebrick, GP);
    Image img = new Bitmap("D:''circle22.png");  //**
    foreach(Point pt in PL) e.Graphics.DrawImage(img, pt);  //**
    img.Dispose();   //**
}