Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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
Vb.net 绘图事件绘制两个对象_Vb.net_User Interface_Graphics_Drawing_Ram - Fatal编程技术网

Vb.net 绘图事件绘制两个对象

Vb.net 绘图事件绘制两个对象,vb.net,user-interface,graphics,drawing,ram,Vb.net,User Interface,Graphics,Drawing,Ram,程序只有这个代码 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click PictureBox1.Image = PictureBox2.Image Dim g As Graphics = Graphics.FromImage(PictureBox1.Image) g.DrawEllipse(New Pen(Color.MediumOrchid, 5), 30, 3

程序只有这个代码

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    PictureBox1.Image = PictureBox2.Image
    Dim g As Graphics = Graphics.FromImage(PictureBox1.Image)
    g.DrawEllipse(New Pen(Color.MediumOrchid, 5), 30, 30, 30, 30)
    g.Dispose()
    PictureBox1.Refresh()
    PictureBox2.Refresh()
End Sub
单击
PictureBox1
之前,它是emtpty,并且
PictureBox2
具有白色图像。

单击
PictureBox1
PictureBox2
后,两者都有椭圆


我认为程序使用一个图像来绘制两个
pictureBox
,所以当我绘制它们时,它们都被绘制。我想将picbox2白色图像和picbox1白色图像设置为椭圆。有什么解决方案吗?

您必须复制图像,这样您将使用相同的数据,但不是相同的对象,因此不会对原始对象进行更改

我不是vb.net专家,但您可以尝试以下方法:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles
    Button1.Click
    PictureBox1.Image = New Bitmap(PictureBox2.Image)
    Dim g As Graphics = Graphics.FromImage(PictureBox1.Image)
    g.DrawEllipse(New Pen(Color.MediumOrchid, 5), 30, 30, 30, 30)
    g.Dispose()
    PictureBox1.Refresh()
    PictureBox2.Refresh()
End Sub

您可以通过
PictureBox1.Image=PictureBox2.Image
强制执行该行为。我知道。我想编辑pic2并将其保存到pic1。但是pic2不能更改。然后您必须创建图像的副本。@UweAllner然后写一个答案。图片框2与图片框1是同一个对象。想象你创造了一个气球。然后你做一个指向它的标志,叫做气球1。然后你做另一个标志,指向它叫气球2,然后你告诉某人把气球炸开。然后你告诉那个人看气球2,他们回来说它爆了。这就是你所拥有的。对同一对象的两个引用。使用第一个引用对对象执行某些操作,它将在第二个引用中可见。它可能被否决了,因为“仅代码”的答案不受欢迎。如果你想要一个更好的分数,你应该解释用户做错了什么,以及为什么/你的代码修复了这个问题。我省略了我在上面的评论中给出的解释。在中编辑它。