如何在C#中创建一个平滑的圆形图片框?

3

我正在使用"Visual Studio 2015 C#"设计程序,并想实现圆形图片框。在程序中,图片框的源图像从网络下载。在默认状态下,“picturebox”是正方形。我想知道如何将“picturebox”的形状更改为圆形。这样加载时的图像将是圆形而不是方形或矩形。

我已经找到了如何缩小图像并保持其质量和居中的方法,但我不知道如何将“picturebox”改成圆形。

我找到了几种方法,但不幸的是,用这些方法画出来的圆并不平滑,而是有锯齿状的像素。

这是我想要的一个例子:http://i.imgur.com/kaOfTFU.png


你找到了哪些方法?也许它们可以得到改进。 - Matti Virkkunen
当区域被绘制时,它们没有反锯齿处理选项。这在昨天的96 dpi显示器上很明显。也许你应该通过将图像变成圆形来超前措施,而不是控件。 - Hans Passant
1个回答

5

您需要创建一个路径(可以是圆形或其他形状),并将picturebox区域设置为该路径。以下是一个使用圆形的示例:

 public partial class Form1 : Form {
     public Form1() {
       InitializeComponent();
       System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath();
       path.AddEllipse(0, 0, pictureBox1.Width, pictureBox1.Height);
       pictureBox1.Region = new Region(path);
     }
   }

这篇 StackExchange 帖子介绍了如何使 PictureBox 上的任何路径光滑: 有可能在绘制裁剪图像时启用抗锯齿吗?

1
这基本上是我使用的方法。问题是用这种方法生成的圆形有锯齿状的像素。例如:http://i.imgur.com/E1TiYZX.png (右边的图片是原图。这正是我想要做的,但希望能得到一个平滑的圆。) - Jose Cancel
嗯...不知道,让我试试 tinkering 一下。 - Baronz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接