Как использовать Graphics.DrawImage в событии Paint, но в форме круга? ⇐ C#
-
Гость
Как использовать Graphics.DrawImage в событии Paint, но в форме круга?
private void imageBoxCroppedImages_Paint(отправитель объекта, PaintEventArgs e) { если (drawBorder) { ControlPaint.DrawBorder(e.Graphics, PictureBoxCroppedImages.ClientRectangle, Color.Red, ButtonBorderStyle.Solid); } если (!isRealTimeCropping) { if (rectImage != null && DrawingRects.Count > 0) { вар др = DrawingRects.Last(); e.Graphics.DrawImage(rectImage, dr.Rect); если (clearRectangles) { РисованиеРекты.Очистить(); PictureBoxImageToCrop.Invalidate(); } } } if (isRealTimeCropping && realTimeCroppedImage != null) { // Рисуем обрезанное изображение в реальном времени в относительной позиции курсора e.Graphics.DrawImage(realTimeCroppedImage, realTimeCursorPos); } } При рисовании изображения внизу строки:
e.Graphics.DrawImage(realTimeCroppedImage, realTimeCursorPos); Есть ли способ продолжать рисовать изображение, но придать ему форму круга? теперь изображение, как и в оригинале, имеет прямоугольную форму.
Я попробовал это:
private void imageBoxCroppedImages_Paint(отправитель объекта, PaintEventArgs e) { если (drawBorder) { ControlPaint.DrawBorder(e.Graphics, PictureBoxCroppedImages.ClientRectangle, Color.Red, ButtonBorderStyle.Solid); } if (isRealTimeCropping && realTimeCroppedImage != null) { // Обработка формы обрезки на основе выбора переключателя если (radioButtonRectangular.Checked) { e.Graphics.DrawImage(realTimeCroppedImage, 0, 0); // Рисуем изображение в верхнем левом углу } иначе, если (radioButtonCircular.Checked) { используя (путь GraphicsPath = новый GraphicsPath()) { path.AddEllipse(0, 0, realTimeCroppedImage.Width, realTimeCroppedImage.Height); e.Graphics.SetClip(путь); e.Graphics.DrawImage(realTimeCroppedImage, 0, 0); } } } } но в этой версии это сделано и изменено на те формы, которые я хотел: круг или прямоугольник, но теперь нарисованные изображения больше не перемещаются вместе с курсором мыши. и в первой версии он двигался мышкой вверху. .
private void imageBoxCroppedImages_Paint(отправитель объекта, PaintEventArgs e) { если (drawBorder) { ControlPaint.DrawBorder(e.Graphics, PictureBoxCroppedImages.ClientRectangle, Color.Red, ButtonBorderStyle.Solid); } если (!isRealTimeCropping) { if (rectImage != null && DrawingRects.Count > 0) { вар др = DrawingRects.Last(); e.Graphics.DrawImage(rectImage, dr.Rect); если (clearRectangles) { РисованиеРекты.Очистить(); PictureBoxImageToCrop.Invalidate(); } } } if (isRealTimeCropping && realTimeCroppedImage != null) { // Рисуем обрезанное изображение в реальном времени в относительной позиции курсора e.Graphics.DrawImage(realTimeCroppedImage, realTimeCursorPos); } } При рисовании изображения внизу строки:
e.Graphics.DrawImage(realTimeCroppedImage, realTimeCursorPos); Есть ли способ продолжать рисовать изображение, но придать ему форму круга? теперь изображение, как и в оригинале, имеет прямоугольную форму.
Я попробовал это:
private void imageBoxCroppedImages_Paint(отправитель объекта, PaintEventArgs e) { если (drawBorder) { ControlPaint.DrawBorder(e.Graphics, PictureBoxCroppedImages.ClientRectangle, Color.Red, ButtonBorderStyle.Solid); } if (isRealTimeCropping && realTimeCroppedImage != null) { // Обработка формы обрезки на основе выбора переключателя если (radioButtonRectangular.Checked) { e.Graphics.DrawImage(realTimeCroppedImage, 0, 0); // Рисуем изображение в верхнем левом углу } иначе, если (radioButtonCircular.Checked) { используя (путь GraphicsPath = новый GraphicsPath()) { path.AddEllipse(0, 0, realTimeCroppedImage.Width, realTimeCroppedImage.Height); e.Graphics.SetClip(путь); e.Graphics.DrawImage(realTimeCroppedImage, 0, 0); } } } } но в этой версии это сделано и изменено на те формы, которые я хотел: круг или прямоугольник, но теперь нарисованные изображения больше не перемещаются вместе с курсором мыши. и в первой версии он двигался мышкой вверху. .
Мобильная версия