Показывать содержимое графического окна после щелчка мышью - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь отобразить изображение в картинке после нажатия на него.

Сначала я попытался установить для свойства PictureBox для видимости значение false, и после того, как я нажал на PictureBox, эта опция стала действительной, и изображение должно отображаться.Это не работает.Пожалуйста, скажите мне, как лучше всего выполнять эту операцию.

Это мой список PictureBoxes

List<PictureBox> logos = new List<PictureBox>();
//Here how I put Images into every single PictureBox:

 private void f1()
    {
        Insert_Logo();
        PictureBox picture;
        int randomnumber;

        for(int i=0; i< tableLayoutPanel1.Controls.Count; i++)
        {
            if (tableLayoutPanel1.Controls[i] is PictureBox)
            {                      
                    picture = (PictureBox)tableLayoutPanel1.Controls[i];
            }
            else
                continue;

            randomnumber = random.Next(0, logos.Count);
            picture.Image = logos[randomnumber].Image;             
            logos.RemoveAt(randomnumber);                
        }

    }

И это функция, в которой я пытался отобразить изображение после нажатия на PictureBox:

    private void PictuteBox_CLICK(object sender, EventArgs e)
    {

        PictureBox clickedPicture = sender as PictureBox;

        if(clickedPicture == null)
        {
            return;
        }

        if (firsPic == null)
        {
            firsPic = clickedPicture;
            firsPic.Visible = true;
            return;
        }

    }    

А это код для вставки картинок в PictureBox:

       private List<PictureBox> Insert_Logo()
    {
        PictureBox pic1 = new PictureBox();
        Image image = Image.FromFile("D:\\Project\\Mini-Game\\Mini-Game\\bin\\Image\\Renault.bmp");
        pic1.Image = image;

        PictureBox pic2 = new PictureBox();
        Image a = Image.FromFile("D:\\Project\\Mini-Game\\Mini-Game\\bin\\Image\\vw.bmp");
        pic2.Size = new Size(a.Width, a.Height);
        pic2.Image = a;

        PictureBox pic3 = new PictureBox();
        Image s = Image.FromFile("D:\\Project\\Mini-Game\\Mini-Game\\bin\\Image\\alfa.bmp");
        pic3.Size = new Size(s.Width, s.Height);
        pic3.Image = s;

        logos.Add(pic1);
        logos.Add(pic2);
        logos.Add(pic3);
        logos.Add(pic4);
        logos.Add(pic5);
        logos.Add(pic6);

return logos;

1 Ответ

0 голосов
/ 20 декабря 2018

Я думаю, вы должны написать свой код так, пояснения комментируются

List<PictureBox> logos = new List<PictureBox>();   
private List<PictureBox> Insert_Logo()
{
    PictureBox pic1 = new PictureBox();
    Image image = Image.FromFile("D:\\Project\\Mini-Game\\Mini-Game\\bin\\Image\\Renault.bmp");
    pic1.Image = image;

    PictureBox pic2 = new PictureBox();
    Image a = Image.FromFile("D:\\Project\\Mini-Game\\Mini-Game\\bin\\Image\\vw.bmp");
    pic2.Size = new Size(a.Width, a.Height);
    pic2.Image = a;

    PictureBox pic3 = new PictureBox();
    Image s = Image.FromFile("D:\\Project\\Mini-Game\\Mini-Game\\bin\\Image\\alfa.bmp");
    pic3.Size = new Size(s.Width, s.Height);
    pic3.Image = s;

    logos.Add(pic1);
    logos.Add(pic2);
    logos.Add(pic3);
    return logos;
}

private void PictuteBox_CLICK(object sender, EventArgs e)
{

    logos = Insert_Logo();
    //The Insert_Logo function returns a list of pictureboxes.
    int randomnumber;
    randomnumber = random.Next(0, logos.Count);
    //Replace Picturebox with the name of the picturebox you want to show the image in
    Picturebox.Image = logos[randomnumber].Image;
    logos.RemoveAt(randomnumber); 
}
...