By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,702 Members | 1,101 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,702 IT Pros & Developers. It's quick & easy.

check point inside "cirkle" (basketball)

P: n/a
Hi group,

I've got this bit of code (see below) which draws a basketball field in a
picturebox (width:198, height:368)
but now I was wondering what would be the easiest way to check inside the
picturebox mouseup event if I clicked inside or outside the 3point area,
because the 3point area isn't a real cirkle

Any hints or tips are welcome.

Thanks in advance and greetz Peter
Dim myNewBmp As Bitmap
Dim g As Graphics

myNewBmp = New Bitmap(197, 366)
g = Graphics.FromImage(myNewBmp)
g.Clear(Color.White)
'boundry
g.DrawRectangle(Pens.Black, 0, 0, 196, 365)

'division line
g.DrawLine(Pens.Black, 0, 183, 196, 183)

'tipoff cirkel
g.DrawEllipse(Pens.Black, 74, 159, 48, 48)

'basket below
g.DrawLine(Pens.Black, 86, 344, 110, 344)
g.DrawEllipse(Pens.Black, 93, 334, 10, 10)

'basket top
g.DrawLine(Pens.Black, 86, 21, 110, 21)
g.DrawEllipse(Pens.Black, 93, 21, 10, 10)

'bucket below
g.DrawLine(Pens.Black, 74, 289, 122, 289)
g.DrawEllipse(Pens.Black, 74, 265, 48, 48)
g.DrawLine(Pens.Black, 74, 289, 35, 365)
g.DrawLine(Pens.Black, 122, 289, 161, 365)

'bucket top
g.DrawLine(Pens.Black, 74, 76, 122, 76)
g.DrawEllipse(Pens.Black, 74, 52, 48, 48)
g.DrawLine(Pens.Black, 74, 76, 35, 0)
g.DrawLine(Pens.Black, 122, 76, 161, 0)

'3point line
'g.DrawArc(Pens.Black, 17, 365, 179, 102, 180, 180)
g.DrawEllipse(Pens.Black, 17, 263, 162, 200)

'3point line
'g.DrawArc(Pens.Black, 17, 365, 179, 102, 180, 180)
g.DrawEllipse(Pens.Black, 17, -98, 162, 200)
g.Dispose()
PictureBox1.Image = myNewBmp

--
Programming today is a race between software engineers striving to build
bigger and better idiot-proof programs, and the Universe trying to produce
bigger and better idiots. So far, the Universe is winning. (Rich Cook)
Feb 15 '06 #1
Share this Question
Share on Google+
3 Replies


P: n/a

Peter Proost wrote:
Hi group,

I've got this bit of code (see below) which draws a basketball field in a
picturebox (width:198, height:368)
but now I was wondering what would be the easiest way to check inside the
picturebox mouseup event if I clicked inside or outside the 3point area,
because the 3point area isn't a real cirkle


Define a GraphicsPath that is made up of the border of the 3point area.
Define a Region based on this GraphicsPath. Vary as necessary the
following sample to see if a point is within the Region:

(code from MSDN, topic titled "Hit Testing with a Region")
The purpose of hit testing is to determine whether the cursor is over a
given object, such as an icon or a button. The following example
creates a plus-shaped region by forming the union of two rectangular
regions. Assume that the variable point holds the location of the most
recent click. The code checks to see whether point is in the
plus-shaped region. If the point is in the region (a hit), the region
is filled with an opaque red brush. Otherwise, the region is filled
with a semitransparent red brush.

[Visual Basic]
Dim point As New Point(60, 10)

' Assume that the variable "point" contains the location of the
' most recent mouse click.
' To simulate a hit, assign (60, 10) to point.
' To simulate a miss, assign (0, 0) to point.

Dim solidBrush As New SolidBrush(Color.Black)
Dim region1 As New [Region](New Rectangle(50, 0, 50, 150))
Dim region2 As New [Region](New Rectangle(0, 50, 150, 50))

' Create a plus-shaped region by forming the union of region1 and
region2.
' The union replaces region1.
region1.Union(region2)

If region1.IsVisible(point, e.Graphics) Then
' The point is in the region. Use an opaque brush.
solidBrush.Color = Color.FromArgb(255, 255, 0, 0)
Else
' The point is not in the region. Use a semitransparent brush.
solidBrush.Color = Color.FromArgb(64, 255, 0, 0)
End If

e.Graphics.FillRegion(solidBrush, region1)


--
Larry Lard
Replies to group please

Feb 15 '06 #2

P: n/a
Thanks for the reply Larry I'll check it out

Thanks again

Greetz Peter

--
Programming today is a race between software engineers striving to build
bigger and better idiot-proof programs, and the Universe trying to produce
bigger and better idiots. So far, the Universe is winning. (Rich Cook)

"Larry Lard" <la*******@hotmail.com> schreef in bericht
news:11**********************@o13g2000cwo.googlegr oups.com...

Peter Proost wrote:
Hi group,

I've got this bit of code (see below) which draws a basketball field in a
picturebox (width:198, height:368)
but now I was wondering what would be the easiest way to check inside the picturebox mouseup event if I clicked inside or outside the 3point area,
because the 3point area isn't a real cirkle


Define a GraphicsPath that is made up of the border of the 3point area.
Define a Region based on this GraphicsPath. Vary as necessary the
following sample to see if a point is within the Region:

(code from MSDN, topic titled "Hit Testing with a Region")
The purpose of hit testing is to determine whether the cursor is over a
given object, such as an icon or a button. The following example
creates a plus-shaped region by forming the union of two rectangular
regions. Assume that the variable point holds the location of the most
recent click. The code checks to see whether point is in the
plus-shaped region. If the point is in the region (a hit), the region
is filled with an opaque red brush. Otherwise, the region is filled
with a semitransparent red brush.

[Visual Basic]
Dim point As New Point(60, 10)

' Assume that the variable "point" contains the location of the
' most recent mouse click.
' To simulate a hit, assign (60, 10) to point.
' To simulate a miss, assign (0, 0) to point.

Dim solidBrush As New SolidBrush(Color.Black)
Dim region1 As New [Region](New Rectangle(50, 0, 50, 150))
Dim region2 As New [Region](New Rectangle(0, 50, 150, 50))

' Create a plus-shaped region by forming the union of region1 and
region2.
' The union replaces region1.
region1.Union(region2)

If region1.IsVisible(point, e.Graphics) Then
' The point is in the region. Use an opaque brush.
solidBrush.Color = Color.FromArgb(255, 255, 0, 0)
Else
' The point is not in the region. Use a semitransparent brush.
solidBrush.Color = Color.FromArgb(64, 255, 0, 0)
End If

e.Graphics.FillRegion(solidBrush, region1)


--
Larry Lard
Replies to group please

Feb 15 '06 #3

P: n/a
Hi again, this is how I implemented Larry's tip, and it works ok for me

Thanks again to Larry

At the top:

Private DriePuntPathB As GraphicsPath
Private driePuntRegB As Region
Private DriePuntPathO As GraphicsPath
Private driePuntRegO As Region
Dim myNewBmp As Bitmap
Dim g As Graphics

myNewBmp = New Bitmap(197, 366) '196,365 zijn de echte maten
g = Graphics.FromImage(myNewBmp)
g.Clear(Color.White)
'boundry
g.DrawRectangle(Pens.Black, 0, 0, 196, 365)

'division line
g.DrawLine(Pens.Black, 0, 183, 196, 183)

'tipoff cirkel
g.DrawEllipse(Pens.Black, 74, 159, 48, 48)

'basket below
g.DrawLine(Pens.Black, 86, 344, 110, 344)
g.DrawEllipse(Pens.Black, 93, 334, 10, 10)

'basket top
g.DrawLine(Pens.Black, 86, 21, 110, 21)
g.DrawEllipse(Pens.Black, 93, 21, 10, 10)

'bucket below
g.DrawLine(Pens.Black, 74, 289, 122, 289)
g.DrawEllipse(Pens.Black, 74, 265, 48, 48)
g.DrawLine(Pens.Black, 74, 289, 35, 365)
g.DrawLine(Pens.Black, 122, 289, 161, 365)

'bucket top
g.DrawLine(Pens.Black, 74, 76, 122, 76)
g.DrawEllipse(Pens.Black, 74, 52, 48, 48)
g.DrawLine(Pens.Black, 74, 76, 35, 0)
g.DrawLine(Pens.Black, 122, 76, 161, 0)

'3point line bottom
'g.DrawArc(Pens.Black, 17, 365, 179, 102, 180, 180)

DriePuntPathO = New GraphicsPath
DriePuntPathO.AddEllipse(17, 263, 162, 200)
driePuntRegO = New Region(DriePuntPathO)
g.DrawEllipse(Pens.Black, 17, 263, 162, 200)

'3point line top
'g.DrawArc(Pens.Black, 17, 365, 179, 102, 180, 180)
g.DrawEllipse(Pens.Black, 17, -98, 162, 200)
DriePuntPathB = New GraphicsPath
DriePuntPathB.AddEllipse(17, -98, 162, 200)
driePuntRegB = New Region(DriePuntPathB)
g.Dispose()
PictureBox1.Image = myNewBmp

Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
If e.Button = MouseButtons.Left Then
If driePuntRegB.IsVisible(e.X, e.Y) Then
MsgBox("two")
Else
If driePuntRegO.IsVisible(e.X, e.Y) Then
MsgBox("two")
Else
MsgBox("three")
End If
End If
End If
End Sub

--
Programming today is a race between software engineers striving to build
bigger and better idiot-proof programs, and the Universe trying to produce
bigger and better idiots. So far, the Universe is winning. (Rich Cook)

"Peter Proost" <pp*****@nospam.hotmail.com> schreef in bericht
news:#0**************@TK2MSFTNGP11.phx.gbl...
Thanks for the reply Larry I'll check it out

Thanks again

Greetz Peter

--
Programming today is a race between software engineers striving to build
bigger and better idiot-proof programs, and the Universe trying to produce
bigger and better idiots. So far, the Universe is winning. (Rich Cook)

"Larry Lard" <la*******@hotmail.com> schreef in bericht
news:11**********************@o13g2000cwo.googlegr oups.com...

Peter Proost wrote:
Hi group,

I've got this bit of code (see below) which draws a basketball field in
a
picturebox (width:198, height:368)
but now I was wondering what would be the easiest way to check inside the picturebox mouseup event if I clicked inside or outside the 3point

area, because the 3point area isn't a real cirkle


Define a GraphicsPath that is made up of the border of the 3point area.
Define a Region based on this GraphicsPath. Vary as necessary the
following sample to see if a point is within the Region:

(code from MSDN, topic titled "Hit Testing with a Region")
>

The purpose of hit testing is to determine whether the cursor is over a
given object, such as an icon or a button. The following example
creates a plus-shaped region by forming the union of two rectangular
regions. Assume that the variable point holds the location of the most
recent click. The code checks to see whether point is in the
plus-shaped region. If the point is in the region (a hit), the region
is filled with an opaque red brush. Otherwise, the region is filled
with a semitransparent red brush.

[Visual Basic]
Dim point As New Point(60, 10)

' Assume that the variable "point" contains the location of the
' most recent mouse click.
' To simulate a hit, assign (60, 10) to point.
' To simulate a miss, assign (0, 0) to point.

Dim solidBrush As New SolidBrush(Color.Black)
Dim region1 As New [Region](New Rectangle(50, 0, 50, 150))
Dim region2 As New [Region](New Rectangle(0, 50, 150, 50))

' Create a plus-shaped region by forming the union of region1 and
region2.
' The union replaces region1.
region1.Union(region2)

If region1.IsVisible(point, e.Graphics) Then
' The point is in the region. Use an opaque brush.
solidBrush.Color = Color.FromArgb(255, 255, 0, 0)
Else
' The point is not in the region. Use a semitransparent brush.
solidBrush.Color = Color.FromArgb(64, 255, 0, 0)
End If

e.Graphics.FillRegion(solidBrush, region1)
>


--
Larry Lard
Replies to group please


Feb 15 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.