2010-07-23 4 views
0

J'ai un PictureBox sur un formulaire.PictureBox Dessin Coordonnées par rapport au formulaire

En cas de charge de la forme que je crée graphiques comme suit:

imageGraphics = Graphics.FromImage(PictureBox1.Image) 

Puis, en cas PictureBox_MouseMove je dessine une ellipse:

imageGraphics.FillEllipse(New SolidBrush(brushColor), e.X, e.Y, brushWidth, brushWidth) 

Peu importe ce que j'essaie, il tire toujours incorrect coordonnées. J'ai essayé e.Location.PointToClient(), PointToScreen() et Cursor.Position. Tout est loin d'être attendu (j'ai besoin de dessiner exactement où est le curseur).

Chaque fois que le formulaire est redimensionné (et PictureBox, aussi, comme sa propriété Anchor est définie pour développer), la position relative du dessin au curseur change.

Y at-il quelque chose qui me manque?

Répondre

1

Cela sonne étrangement comme un sizeMode incorrect sur votre PictureBox. Essayez de rendre la taille de l'image PictureBox identique à celle de PictureBox.

+0

Si je place PictureBox de la même taille que l'image, cela fonctionne. Mais je veux garder l'échelle de l'image à l'intérieur du PB, est-ce possible? – SharpAffair

+0

Finalement, j'ai décidé d'utiliser le conteneur avec le défilement automatique, avec PictureBox SizeMode défini sur AutoSize. Cela a résolu le problème. – SharpAffair

1

Bien que ce soit 1,5 ans, l'appel correct pour obtenir les coordonnées par rapport à PictureBox est:

Dim p1 as point=PictureBox1.PointToClient(Windows.Forms.Cursor.Position) 
    imageGraphics.FillEllipse(New SolidBrush(brushColor), p1.X, p1.Y, brushWidth, brushWidth) 

Je suppose, il sera utile pour quelqu'un à l'avenir.

Questions connexes