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.