C# 如何基于鼠标单击选择图片框上的图像

C# 如何基于鼠标单击选择图片框上的图像,c#,.net,winforms,picturebox,C#,.net,Winforms,Picturebox,我有4个图片框加载图像。我想在鼠标点击的基础上选择这些图像。例如,如果我单击picturebox 1和picturebox 2中的图像,我只想从picturebox 1和picturebox 2中获取图像。该功能类似于Android手机中的Gallery 这不是很难。动态创建pictureBox,将它们添加到相同的中,单击处理程序并存储所选pictureBox中的图像 e、 g.画廊表格(选择最后一张图片) public partial class GalleryForm : Form {

我有4个图片框加载图像。我想在鼠标点击的基础上选择这些图像。例如,如果我单击picturebox 1和picturebox 2中的图像,我只想从picturebox 1和picturebox 2中获取图像。该功能类似于Android手机中的Gallery

这不是很难。动态创建pictureBox,将它们添加到相同的
中,单击
处理程序并存储所选pictureBox中的图像

e、 g.画廊表格(选择最后一张图片)

public partial class GalleryForm : Form
{
    // stores selected images in order of adding
    private readonly List<Image> _gallery = new List<Image>();
    private readonly Random _rnd = new Random();

    // handle pics layout on form
    private readonly FlowLayoutPanel flowPanel;
    public GalleryForm()
    {
        InitializeComponent();

        Name = "GalleryForm";
        Text = "Gallery";
        ClientSize = new Size(276, 274);

        // flowPanel will contain picture boxes with images
        flowPanel = new FlowLayoutPanel();
        flowPanel.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left| AnchorStyles.Right;
        flowPanel.Location = new Point(12, 12);
        flowPanel.Name = "flowPanel";
        flowPanel.Size = new Size(252, 250);

        int picsCount = 4;
        var picSize = new Size(100, 100);
        var imSize = new Size(50, 50);

        // creates required number of picture boxes with simple images
        for (int p = 0; p < picsCount; p++)
        {
            var picBox = new PictureBox();
            picBox.Name = "pic" + (p+1).ToString();
            picBox.Size = picSize;
            picBox.SizeMode = PictureBoxSizeMode.Zoom;
            picBox.Image = GetImage(p, imSize);
            picBox.Click += ClickOnImage;
            flowPanel.Controls.Add(picBox);
        }

        Controls.Add(flowPanel);
    }
    // click handler
    private void ClickOnImage(object sender, EventArgs eventArgs)
    {
        var picBox = (PictureBox) sender;
        if (_gallery.Remove(picBox.Image))
            // if _gallery contained image, remove selection
            picBox.BorderStyle = BorderStyle.None;
        else
        {          
            // add selection
            picBox.BorderStyle = BorderStyle.Fixed3D;
            // add image to _gallery
            _gallery.Add(picBox.Image);
        }
    }

    // creates image with solid background
    private Bitmap GetImage(int p, Size s)
    {
        var bmp = new Bitmap(s.Width, s.Height);
        using (Graphics gr = Graphics.FromImage(bmp))            
            gr.Clear(Color.FromArgb(_rnd.Next(255), _rnd.Next(255), _rnd.Next(255)));            
        return bmp;
    }
}