Vb.net 拖航及;将一个图片盒放入另一个图片盒

Vb.net 拖航及;将一个图片盒放入另一个图片盒,vb.net,visual-studio,Vb.net,Visual Studio,您好,我是Visual Basic新手,有几个问题 我正在使用Visual Studio 2013(Visual Basic) 作为练习,我尝试创建一个绘画混合器程序。该界面将包括一个由12种圆形颜色组成的色轮和一台混音机。(车轮与下图相似,未显示搅拌机) 孩子将能够将2种颜色拖放到混合机中,产生最终的颜色,然后出现在轮子上,使他们能够产生更多的颜色,等等 我想我会用画框来装油漆罐和搅拌机。这将允许我附加一个视觉图像的组成部分与透明的背景等,这将看起来不错 1) 这些部件是否适用于此目的 我已

您好,我是Visual Basic新手,有几个问题

我正在使用Visual Studio 2013(Visual Basic)

作为练习,我尝试创建一个绘画混合器程序。该界面将包括一个由12种圆形颜色组成的色轮和一台混音机。(车轮与下图相似,未显示搅拌机)

孩子将能够将2种颜色拖放到混合机中,产生最终的颜色,然后出现在轮子上,使他们能够产生更多的颜色,等等

我想我会用画框来装油漆罐和搅拌机。这将允许我附加一个视觉图像的组成部分与透明的背景等,这将看起来不错

1) 这些部件是否适用于此目的

我已经生成了下面的代码,它使我能够在屏幕上拖动两个图片框

    Dim point As New System.Drawing.Point
    Dim X, Y As Integer

    Private Sub Box2_MouseDown(sender As Object, e As MouseEventArgs) Handles P2.MouseDown
    X = Control.MousePosition.X - P2.Location.X
    Y = Control.MousePosition.Y - P2.Location.Y
End Sub

Private Sub Box2_MouseMove(sender As Object, e As MouseEventArgs) Handles P2.MouseMove
    If e.Button = Windows.Forms.MouseButtons.Left Then
        point = Control.MousePosition
        point.X = point.X - (X)
        point.Y = point.Y - (Y)
        P2.Location = point
    End If
End Sub

Private Sub Box1_MouseDown(sender As Object, e As MouseEventArgs) Handles P1.MouseDown
    X = Control.MousePosition.X - P1.Location.X
    Y = Control.MousePosition.Y - P1.Location.Y
End Sub

Private Sub Box1_MouseMove(sender As Object, e As MouseEventArgs) Handles P1.MouseMove
    If e.Button = Windows.Forms.MouseButtons.Left Then
        point = Control.MousePosition
        point.X = point.X - (X)
        point.Y = point.Y - (Y)
        P1.Location = point
    End If
End Sub
我将需要安排在一个圆圈中,只有红色,绿色和蓝色在游戏开始时可见的图片框

2) 我该如何做才能在屏幕改变时保持相对位置,或者我应该有一个固定的屏幕大小

盒子也需要固定在这个位置上,例如,如果孩子把盒子拖到屏幕上的某个位置并释放鼠标按钮,罐子就会回到同一个位置

3) 我将如何编写此代码? 我想我需要X&Y来确定位置

如果孩子将色罐释放到搅拌机上,并在机器上添加另一个色罐,则产生的色罐将出现在轮子上

4) 我将如何编写此代码? 我想我还需要X&Y坐标来检查它是否在PictureBox(颜色混合机)上,或者是否有类似OnDragOver的事件来处理这个问题

我最终会在以后的某个日期为应用程序添加声音,例如(演讲)“你混合了红色和蓝色来产生紫色”等等……如果可能的话

我对Java中的OOP有很好的理解,我正在尝试一些新的东西

欢迎所有建议、建议和帮助,让我朝着正确的方向开始,并表示感谢

问候


J

首先,您可能应该调整屏幕大小以使其更容易。然后,您可以在屏幕上定义矩形,并检查拖动的picturebox在哪个矩形中释放,然后相应地执行操作。例如,每个色点和搅拌机都有一个矩形。还可以为每个矩形定义放置盆的位置。要查看的内容可能会很有用,可以使用字典快速查找矩形的属性,处理程序的委托。使用PictureBox并不理想,正确的方法是分层绘制。换句话说,Graphics.DrawImage()调用您放置的每个“pot”。它可以工作,您必须将图片框的父属性更改为底部属性。“但是,重叠它们是不正确的。”汉斯,谢谢——请你为我详细说明一下好吗?