如何实例化图像时,用户点击在windows窗体
本文关键字:windows 窗体 用户 实例化 图像 | 更新日期: 2023-09-27 18:08:52
我有一个小的圆形图像,我想做如下:
每当窗体上的某个位置被点击时,如果那里没有其他圆圈,我想在那个位置添加一个新的圆圈实例
我正在考虑一个圆圈列表,当点击发生时,我检查列表,看看是否没有圆圈重叠,然后添加一个新的,但我没有任何表单的经验,所以我不知道什么是最好的方法。
您可以创建一个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(); //**
}