Cortar imagen con forma circular

Preguntado hace 2 años

Juan C. Gallardo

Editada hace 2 años

Javier Suero
Votos
PositivosNegativosTotal
4 0 4
165 Visualizaciones
Compártelo: Compártelo en twitterCompártelo en Facebook

Buenos dias, Necesitaria saber si existe alguna libreria o forma que me permita subir una imagen cuadrada o rectangular, y me la corte con forma redondeada.

Gracias de antemano.

Actualizando datos

3 Respuestas

Hace 2 años

Gabriel Molina
Editada hace 2 años
Votos
PositivosNegativosTotal
303

Hola, FOX,

creo que te puede valer el siguiente código (es una ligera adaptación de este artículo http://www.codeproject.com/KB/web-image/ValeryZhupanov.aspx ) que usé en un proyecto antiguo.

private Bitmap MakeRoundedCorners(Image Imagen, Int32 Radius)
        {
            Bitmap Bmp = new Bitmap(Imagen, Imagen.Width, Imagen.Height);
            Graphics G = Graphics.FromImage(Bmp);
            G.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
            G.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            Brush brush = new System.Drawing.SolidBrush(Color.Red);

            for (int i = 0; i < 4; i++)
            {
                Point[] CornerUpLeft = new Point[3];

                CornerUpLeft[0].X = 0;
                CornerUpLeft[0].Y = 0;

                CornerUpLeft[1].X = Radius;
                CornerUpLeft[1].Y = 0;

                CornerUpLeft[2].X = 0;
                CornerUpLeft[2].Y = Radius;

                System.Drawing.Drawing2D.GraphicsPath pathCornerUpLeft =
                   new System.Drawing.Drawing2D.GraphicsPath();

                pathCornerUpLeft.AddArc(CornerUpLeft[0].X, CornerUpLeft[0].Y,
                    Radius, Radius, 180, 90);
                pathCornerUpLeft.AddLine(CornerUpLeft[0].X, CornerUpLeft[0].Y,
                    CornerUpLeft[1].X, CornerUpLeft[1].Y);
                pathCornerUpLeft.AddLine(CornerUpLeft[0].X, CornerUpLeft[0].Y,
                    CornerUpLeft[2].X, CornerUpLeft[2].Y);

                G.FillPath(brush, pathCornerUpLeft);
                pathCornerUpLeft.Dispose();

                Bmp.RotateFlip(RotateFlipType.Rotate90FlipNone);
            }

            brush.Dispose();
            G.Dispose();

            Color backColor = Bmp.GetPixel(0, 0);

            Bmp.MakeTransparent(backColor);

            return Bmp;
        }

Espero que te valga, un saludo, Gabriel.

Cerrar

A ti. Me alegro que te sirviera. Gabriel Molina hace 2 años
Gracias por el aporte. Juan C. Gallardo hace 2 años

Hace 1 año

Fernandoflorido
Votos
PositivosNegativosTotal
000

Mas facil, otra capa, un archivo imagen.png solapado de las mismas dimensiones, con las areas que quieres conservar en transparentes y las zonas que no deseas en opacas, color plano.

Limitacion: Las areas que no deseas no son transparentes, no permiten ver el background, sino que llevan un color previamente establecido en la imagen.png

Cerrar

Hace 2 años

Juan C. Gallardo
Votos
PositivosNegativosTotal
000

Lo pruebo y te digo algo.

Gracias por el aporte

Cerrar

Tu respuesta

Confirmación

Cerrar

Si sales ahora, perderás los cambios. ¿Estás seguro de querer salir?

Para participar en Babelias, debes estar convenientemente validado. Si ya eres usuario inicia sesión, si no lo eres, te puedes registrar.

Dar una respuesta

Trata de ser descriptivo, usa al menos 25 caracteres