private Image RoundCorners(Image image, int cornerRadius)
{
cornerRadius *= 2;
Bitmap roundedImage = new Bitmap(image.Width, image.Height);
GraphicsPath gp = new GraphicsPath();
gp.AddArc(0, 0, cornerRadius, cornerRadius, 180, 90);
gp.AddArc(0 + roundedImage.Width - cornerRadius, 0, cornerRadius, cornerRadius, 270, 90);
gp.AddArc(0 + roundedImage.Width - cornerRadius, 0 + roundedImage.Height - cornerRadius, cornerRadius, cornerRadius, 0, 90);
gp.AddArc(0, 0 + roundedImage.Height - cornerRadius, cornerRadius, cornerRadius, 90, 90);
using (Graphics g = Graphics.FromImage(roundedImage))
{
//g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.SmoothingMode = SmoothingMode.AntiAlias;
g.SetClip(gp);
g.DrawImage(image, Point.Empty);
}
return roundedImage;
}