Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建多个图片框并保存它们?_C#_Picturebox - Fatal编程技术网

C# 如何创建多个图片框并保存它们?

C# 如何创建多个图片框并保存它们?,c#,picturebox,C#,Picturebox,我想让我的应用程序中的用户在每次单击主picturebox时都能创建picturebox(我想保留picturebox并为用户提供无限的picturebox创建功能) 守则: PictureBox Pic = new PictureBox(); Pic = pictureBox2; Pic.Left = e.X; Pic.Top = e.Y; Pic.Visible = true; 您需要注册到点击pictureBox的事件,并在点击时创建一个新的pirtureBox: this.p

我想让我的应用程序中的用户在每次单击主picturebox时都能创建picturebox(我想保留picturebox并为用户提供无限的picturebox创建功能)

守则:

PictureBox Pic = new PictureBox();
Pic = pictureBox2;
Pic.Left = e.X;
Pic.Top = e.Y;
Pic.Visible = true;

您需要注册到点击
pictureBox
的事件,并在点击时创建一个新的
pirtureBox

     this.pictureBox1 = new System.Windows.Forms.PictureBox();
     this.pictureBox1.Location = new System.Drawing.Point(319, 32);
     this.pictureBox1.Name = "pictureBox1";
     this.pictureBox1.Size = new System.Drawing.Size(100, 50);
     this.pictureBox1.TabIndex = 7;
     this.pictureBox1.TabStop = false;
     // THE IMAGE IS UP TO YOU TO ADD.USE THIS -this.pictureBox1.Image = 
     this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick);
     this.Controls.Add(pb);
pictureBox1\u鼠标单击事件中执行以下操作:

  private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
  {
     PictureBox pb = new System.Windows.Forms.PictureBox();
     pb.Location = new System.Drawing.Point(319, 32);// THE LOCATION AND CONTEXT IS UP TO YOU
     pb.Name = "pictureBox1";
     pb.Size = new System.Drawing.Size(100, 50);
     pb.TabIndex = 7;
     pb.TabStop = false;
     this.Controls.Add(this.pictureBox1);
  }

嗯,我在这里补充说,正如rene在评论中所说,如果你使用大图片或大量图片,你可能会很快耗尽内存。在这种情况下,您应该对不再需要的图片执行
.Dispose()

这个问题有五到六个不同的方面,这是在您的应用程序因OOM异常而死亡之前。你不保留图片盒,你保留图像,你用图片盒展示的图像。不要吝啬。卑鄙不是本网站的目的:)。回到问题上来:它实际上不是“无限”,而是动态无界的,或者是一个先验未知数量的PictureBox。因此,您需要了解控件是什么。我已经假设您正在使用Windows窗体。查看相关表单???.designer.cs文件包含的内容。您可以尝试模仿该文件中的魔力。@TonyHopkinson我怀疑在OOM异常应用之前,由于过度使用用户权限,Win32Exception将终止应用程序objects@rene看看这个评论部分变成了什么。事实上,我们是如此聪明,我们只是因为这个问题的笨拙而嘲笑它,并没有使我们或提问者变得更聪明。很明显,提问者想知道:在运行时如何执行可视化设计器在设计时执行的任何“魔术”。提问者使用“无穷大”来表示“一个无限的、未知的、先验的控制数”,这只是一个笨拙的特性。我们自己都有很多特质。这个有点笨拙。它可能来自一个数学模型background@EduardDumitru要点:请不要忘记将新创建的PictureBox实际添加到您认为asker正在考虑的“任意”容器中。可能是表单本身,也可能是某个面板。也可能是处理Picturebox,以防止OP遇到评论员预测的灾难性故障?Picturebox分配非托管资源。如果继续添加,则会耗尽内存和/或句柄。在你的asnwer中有一个关于这一点的警告就足够了,如果不再需要的话,建议将其处理掉。您的代码的最后一行不应该读取
this.Controls.Add(pb)?如果您继续添加图像,在某个时候您将耗尽资源,更不用说它将变得真实sloooooooowwwww@rene是的,我有时会有这样的问题,我没有注意到这些小事情。。。我想这取决于图片框,但是正常大小的图片需要占用内存(4gb,对吗?)的数量是非常大的,对吗?