Координаты чертежа PictureBox относительно формы - PullRequest
0 голосов
/ 23 июля 2010

У меня есть PictureBox на форме.

В событии Load формы я создаю графику следующим образом:

imageGraphics = Graphics.FromImage(PictureBox1.Image)

Затем в событии PictureBox_MouseMove рисую эллипс:

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

Независимо от того, что я пытаюсь, он всегда опирается на неправильные координаты.Я пробовал e.Location.PointToClient (), PointToScreen () и Cursor.Position.Все далеко от ожидаемого (мне нужно рисовать именно там, где находится курсор).

Всякий раз, когда форма изменяется (и PictureBox тоже, поскольку его свойство Anchor установлено для расширения), относительная позиция рисования к курсору изменяется.

Есть ли что-то, чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 21 января 2012

Хотя ему 1,5 года, правильный вызов для получения координат относительно PictureBox:

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

Полагаю, это пригодится кому-то в будущем.

1 голос
/ 23 июля 2010

Это подозрительно похоже на неправильный размер sizeMox на вашем картинке Box.Попробуйте сделать размер изображения PictureBox таким же, как у PictureBox.

...