произвольный выбор изображения в C # - PullRequest
1 голос
/ 05 марта 2012

Я работаю над приложением Windows в C #, где я хочу выбрать любую область элемента управления Picturebox, как мы можем сделать в MS Paint, используя инструмент «Выбор произвольной формы», а затем я могу редактировать эту область. Я рисую регион, используя код ниже:

private void picturemap_MouseMove(object sender, MouseEventArgs e)

        {
              if (StartDrawing)
              {
                    if (e.Button == MouseButtons.Left)
                    {
                          paintCurrentPosition(3, Color.Red, e.X, e.Y);
                    }
              }
        }
        private void paintCurrentPosition(int thickness, Color colorPen, int x, int y)
        {
              SolidBrush brush = new SolidBrush(colorPen);
              bmp = new Bitmap(picturemap.Image);
              gr = Graphics.FromImage(bmp);
              gr.FillRectangle(brush, x, y, thickness, thickness);

              picturemap.Image = bmp;
        }

Теперь я хочу выбрать регион, который я здесь нарисовал. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 27 апреля 2012

Вам нужно сохранить каждую координату вашей произвольной формы в объекте GrphicsPath, пока пользователь рисует. При наведении мыши обязательно закройте путь.

Позже, когда пользователь наводит указатель мыши на графический блок без нажатия кнопок мыши, выполните HitTest (e.X, e.Y) при перемещении мыши, чтобы определить, находятся ли текущие координаты в области графического контура.

Есть много простых алгоритмов, которые могут выполнить HitTest для вас очень быстро, не вызывая задержки вычислений.

Это похоже на выполнение прямоугольника. Содержит (x, y) тест.

...