c# image winforms crop

c# - ¿Cómo recortar un área poligonal de una imagen en un WinForm pictureBox?



winforms crop (1)

¿Cómo puedo recortar una parte de una imagen con un polígono? Por ejemplo, tengo 6 coordenadas y me gustaría cortar esta parte de una imagen.


Puede convertir la List de Points en un Polígono, luego en una GraphicsPath y luego en una Region y, después de Graphics.Clip(Region) , puede Graphics.DrawImage y listo.

using System.Drawing.Drawing2D; GraphicsPath gp = new GraphicsPath(); // a Graphicspath gp.AddPolygon(points.ToArray()); // with one Polygon Bitmap bmp1 = new Bitmap(555,555); // ..some new Bitmap // and some old one..: using (Bitmap bmp0 = (Bitmap)Bitmap.FromFile("D://test_xxx.png")) using (Graphics G = Graphics.FromImage(bmp1)) { G.Clip = new Region(gp); // restrict drawing region G.DrawImage(bmp0, 0, 0); // draw clipped pictureBox1.Image = bmp1; // show maybe in a PictureBox } gp.Dispose();

Tenga en cuenta que puede elegir DrawImage ubicación de DrawImage en cualquier lugar, incluso en el área negativa a la izquierda y la parte superior del origen.

También tenga en cuenta que para el recorte ''real'', algunos (al menos 4) de sus puntos deben alcanzar los bordes del Bitmap de Bitmap objetivo. - O puede usar GraphicsPath para obtener su cuadro delimitador:

RectangleF rect = gp.GetBounds(); Bitmap bmp1 = new Bitmap((int)Math.Round(rect.Width, 0), (int)Math.Round(rect.Height,0)); ..