试试这个(对不起我的英语不好):
public partial class Form1 : Form
{
public Form1()
{
//InitializeComponent();
Width = 800;
Height = 600;
pictureBox = new PictureBox { Parent = this, Dock = DockStyle.Top, Height = 500 };
pictureBox.ImageLocation = "pic.jpg";
pictureBox.Click += PictureBox_Click;
}
PictureBox pictureBox;
List<Point> points = new List<Point>();
private void PictureBox_Click(object sender, EventArgs e)
{
var point = pictureBox.PointToClient(MousePosition);
points.Add(point);
var iconBox = new PictureBox { Parent = pictureBox, Location = point, Size = new Size(32, 32) };
iconBox.Image = SystemIcons.Hand.ToBitmap();
iconBox.Click += IconBox_Click;
}
private void IconBox_Click(object sender, EventArgs e)
{
var pb = (PictureBox)sender;
points.Remove(pb.Location);
pb.Parent = null;
pb.Click -= IconBox_Click;
pb.Dispose();
}
}
在Click
事件处理程序中,我们创建一个新的PictureBox
并将其放在 main 上PictureBox
。为他设置所需的图像(为简单起见,我使用了系统图标)。
还为每个 new 添加一个单击处理程序PictureBox
,以通过鼠标单击将其删除。PictureBox
在其处理程序中,我们从列表和父控件中删除变得不必要。取消订阅活动。然后将其丢弃。
您可以将点列表保存到数据库或文件中。