 |
|
ใช้ picturebox ในการทำจิ๊กซอ แล้วต้องการให้เช็คว่า ถ้ารูปไม่ต่อกันให้โชว์ message box ว่า error ใครพอจะทราบแนะนำหน่อยนะคะ |
|
 |
|
|
 |
 |
|
ถ้าเป็นผมนี้บ้านๆเลยครับ
สร้าง list มาเก็บค่า พิกัดทั้ง 4 ของรูปไว้
อย่างรูปแรกได้ 20,25,20,75
รูปต่อไปจะต้องชนอยู่แล้ว
หลายๆรูปก็ for loop เอาครับ
|
 |
 |
 |
 |
Date :
2016-04-21 14:44:27 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
รูปแรกได้ 20,25,20,75
รูป 2 ได้ 20,50,75,125
รูป 3 ได้ 50,25,75,100
ประมาณนี้ ครับ
|
 |
 |
 |
 |
Date :
2016-04-21 14:47:59 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณพี่มากนะคะ แต่หนูยังไม่เก่งมาก มีความรู้พื้นมากๆ พี่ช่วยแนะนำให้เห็นภาพกว่านี้ได้ไหมคะ ขอบคุณค่ะ
|
 |
 |
 |
 |
Date :
2016-04-21 17:14:55 |
By :
liwpatta |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หากเรามองแบบบ้านๆ
object ที่เราลากลงไปใน ฟอร์มนั้น จะประกอบด้วย Location กับ Size

ผมจะกำหนดขอบเขตของ pictureBox แต่ละตัว ประมาณนี้

แค่เรารู้ เจ้า a b c d เราก็ต้องรู้พิกัดอยู่แล้วว่าตัวไหนชนกับตัวไหนอยู่
Code (VB.NET)
Public Class Form1
Dim lst As New List(Of PictureBox)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
lst.Add(PictureBox1)
lst.Add(PictureBox2)
For Each pic As PictureBox In lst
Dim a As Double = PictureBox3.Location.X
Dim b As Double = PictureBox3.Location.Y
Dim c As Double = b + PictureBox3.Height
Dim d As Double = a + PictureBox3.Width
If a = pic.Location.X + pic.Width Or d = pic.Location.X Or b = pic.Location.Y + pic.Height Or c = pic.Location.Y Then
MessageBox.Show("มีส่วนที่ชนกันอยู่")
lst.Add(PictureBox3) 'เพิ่ม PictureBox3 ลงใน list
Exit Sub
End If
Next
MessageBox.Show("ไม่มีส่วนที่ชนกันเลย")
End Sub
End Class
|
 |
 |
 |
 |
Date :
2016-04-21 18:26:49 |
By :
lamaka.tor |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|