/ / Placer un cercle à la position de la souris dans la zone d'image - vb.net, picturebox

Placer le cercle à la position de la souris dans la zone d'image - vb.net, zone d'image

J'ai fait beaucoup de recherches et je ne trouve pas l'aide dont j'ai besoin.

Je dois pouvoir placer des cercles avecdiamètre de 140 pixels sur certaines sections d'une image dans une boîte à images. Les cercles devraient apparaître lorsque la souris est cliqué sur l'image. J'ai besoin que le centre du cercle soit placé à la position de la souris lorsqu'il est cliqué. L'utilisateur devrait également pouvoir faire glisser le cercle vers une position différente une fois qu'il est placé sur l'image.

Quelqu'un peut-il me donner des conseils sur la façon dont cela est fait?

Merci d'avance!

Réponses:

0 pour la réponse № 1

Cela pourrait vous lancer. Dessine un simple cercle rouge sur PictureBox.Click

Private Sub PictureBox1_Click(sender As System.Object, e As MouseEventArgs) Handles PictureBox1.Click

Dim myBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Red)
Dim formGraphics As System.Drawing.Graphics
formGraphics = sender.CreateGraphics()
formGraphics.FillEllipse(myBrush, New Rectangle(e.X / 2, e.Y / 2, 70 , 70))
myBrush.Dispose()
formGraphics.Dispose()
End Sub

MODIFIER Ressemble exactement à ce que vous recherchez http://www.dreamincode.net/forums/topic/59049-simple-drawing-selection-shape-or-rubberband-shape/


0 pour la réponse № 2

Ma solution : `

Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
"start creating circle when the mouse is clicked

PictureBox1.Refresh() "erases previous rectangle
Xstart = e.X
Ystart = e.Y


bRB = True
End Sub

Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
"drag the circle over the seclected area

If bRB Then
PictureBox1.Refresh() "erases previous rectangle

Select Case e.X
Case Is < 0
RBRectangle.X = 0
" RBRectangle.Width = Xstart
RBRectangle.Width = 140

Case 0 To Xstart
RBRectangle.X = e.X
"RBRectangle.Width = Xstart - e.X
RBRectangle.Width = 140

Case Xstart To PBWidth
RBRectangle.X = Xstart
"RBRectangle.Width = e.X - Xstart
RBRectangle.Width = 140
Case Is > PBWidth
RBRectangle.X = Xstart
"RBRectangle.Width = PBWidth - Xstart
RBRectangle.Width = 140
End Select

Select Case e.Y
Case Is < 0
RBRectangle.Y = 0
"RBRectangle.Height = Ystart
RBRectangle.Height = 140

Case 0 To Ystart
RBRectangle.Y = e.Y
"RBRectangle.Height = Ystart - e.Y
RBRectangle.Height = 140
Case Ystart To PBHeight
RBRectangle.Y = Ystart
"RBRectangle.Height = e.Y - Ystart
RBRectangle.Height = 140
Case Is > PBHeight
RBRectangle.Y = Ystart
"RBRectangle.Height = PBHeight - Ystart
RBRectangle.Height = 140
End Select

PictureBox1.CreateGraphics.DrawEllipse(RBPen, RBRectangle)
End If
End Sub

Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
"show the area in the rectangle as a new image
Dim CroppedBm As Bitmap
If bRB Then
bRB = False



CroppedBm = New Bitmap(RBRectangle.Width, _
RBRectangle.Height)



End If
End Sub

0 pour la réponse № 3

Essaye ça:

Dim g As Graphics
Dim md As Boolean
Private Sub Form1_Load() Handles MyBase.Load
g = PictureBox1.CreateGraphics
End Sub

Private Sub PictureBox1_MouseClick(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseClick
PictureBox1.Refresh()
g.DrawEllipse(Pens.Red, New Rectangle(e.X - 35, e.Y - 35, 70, 70))
End Sub

Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown
md = True
End Sub

Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
If md Then
PictureBox1.Refresh()
g.DrawEllipse(Pens.Red, New Rectangle(e.X - 35, e.Y - 35, 70, 70))
End If
End Sub

Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp
md = False
End Sub