Как запустить события Picturebox с кнопки - PullRequest
0 голосов
/ 22 августа 2011

У меня есть кнопка с именем «Paint», которая после щелчка позволяет рисовать прямоугольник на моей картинке, то есть она действует как переключатель, позволяющий рисовать (вкл / выкл).

Я нарисовал прямоугольник, используя положения мыши, как объяснено здесь: Как я могу получить координаты мыши в PictureBox? . Но прямоугольник рисуется всякий раз, когда я перемещаюсь над PictureBox.

Как я могу реализовать функциональность, в которой рисование должно быть реализовано только тогда, когда «Paint» включен Я попытался запустить реализацию из событий Picturebox: Paint, MouseDown, MoseMove, Mouse Up ...

Ответы [ 2 ]

2 голосов
/ 22 августа 2011
  1. установите флажок (bool) в своем приложении, сообщая вам, в каком режиме вы находитесь: рисуете или нет (можно активировать с помощью кнопки, о которой вы говорите).
  2. при наведении курсора мыши взять начальную точку (e.x, e.y) из обработчика событий мыши. Теперь у вас есть верхняя левая точка прямоугольника.

    3. В то время как при перемещении мыши возьмите e.x и e.y, и это правая нижняя точка, нарисуйте прямоугольник. поместите код рисования в движение мыши так, чтобы он рисовал, как программа «Рисование» (делайте это, если флаг рисования истинен).

  3. в мыши вверх сбросить флаг рисования

    5.в событии рисования в окне рисунка нарисуйте все фигуры, которые у вас есть, чтобы, если вы свернули окна приложения, а затем развернули его, вы нашли нарисованные фигуры, этого можно добиться, сделав прямоугольник классом некоторые экземпляры этого (для обтекания ваших фигур и рисования).

0 голосов
/ 22 августа 2011

Самое простое решение - добавить логическую переменную bDraw, которая становится ИСТИНОЙ только при нажатии кнопки. Все остальные методы рисования ничего не делают, если эта переменная ЛОЖЬ.

Другое решение может быть просто подписаться на События мыши внутри обработчика событий нажатия кнопки. Поэтому, если кнопка НЕ ​​нажата, повышение события не происходит.

...