ตามความเข้าใจผม ผมจะเช็ค if ใน เหตุการณ์ mouseclick ถ้าแกน x และ y อยู่ตำแหน่งเดียวกับ บอล ให้ clear บอล แต่ผลไม่ออกเปนงั้นงะ มันจะทำได้แค่ครึ่งเดียวของ สี่เหลี่ยม คือ ทำได้แค่ รูป 3 เหลี่ยมบน 3เหลี่ยมล่าง เช็ค point ไม่เปนอะครับ ช่วนหน่อยนะครับ Code (C#)
Public Class Form1
Private dx As Integer
Private dy As Integer
Private x As Integer
Private y As Integer
Private ix As Integer
Private iy As Integer
Private ballWidth As Integer = 50
Private ballHeigth As Integer = 50
Dim g As Graphics = Me.CreateGraphics
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Timer1.Interval = 5
Dim rnd As New Random
dx = rnd.Next(1, 4)
dy = rnd.Next(1, 4)
x = rnd.Next(0, Me.ClientSize.Width - ballWidth)
y = rnd.Next(0, Me.ClientSize.Height - ballHeigth)
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True)
Me.UpdateStyles()
End Sub
Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
ix = e.X
iy = e.Y
If ix >= x And iy >= y Then
Timer1.Stop()
g.Clear(Me.BackColor)
End If
End Sub
Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
e.Graphics.Clear(Me.BackColor)
e.Graphics.FillEllipse(Brushes.Blue, x, y, ballWidth, ballHeigth)
e.Graphics.DrawEllipse(Pens.Black, x, y, ballWidth, ballHeigth)
End Sub
Private Sub Timer1_Tick_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
x += dx
If x < 0 Then
dx = -dx
ElseIf x + ballWidth > Me.ClientSize.Width Then
dx = -dx
End If
y += dy
If y < 0 Then
dy = -dy
ElseIf y + ballHeigth > Me.ClientSize.Height Then
dy = -dy
End If
Me.Invalidate()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Start()
End Sub
End Class
Tag : .NET, Win (Windows App), Class Library, VB.NET, C#