【问题标题】:How to create a smooth circle picture box in C#?如何在C#中创建一个平滑的圆形图片框?
【发布时间】:2016-06-11 00:44:58
【问题描述】:

我目前正在“Visual Studio 2015 C#”中设计一个程序,并希望实现圆形图片框。程序中有图片框,源图片是从网上下载的。在它的默认状态下,“图片框”是方形的。我想知道如何将“图片框”的形状更改为圆形。这样加载时的图像将是圆形而不是方形或矩形。

我已经想出了如何缩小图像并保持其质量并将其居中,但我不知道如何将“图片框”更改为圆形。

我找到了几种方法来做到这一点,但不幸的是,使用这种方法,圆圈并不平滑,而是像素化。

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

【问题讨论】:

  • 你当时找到了什么方法?也许他们可以改进。
  • 区域在绘制时没有抗锯齿,这不是一个可用的选项。这在昨天的 96 dpi 显示器上往往很明显。也许您应该通过使 Image 圆形而不是控件来取得成功。

标签: c# image visual-studio-2015 picturebox


【解决方案1】:

您创建一个路径(即圆形,或您想要的任何形状),并将图片框区域设置为该路径。这是一个带圆圈的示例:

 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 帖子介绍了如何使图片框的任何路径变得平滑:

Possible to have anti-aliasing when drawing a clipped image?

【讨论】:

  • 这几乎就是我使用的方法。问题是用这种方法产生的圆是像素化的。示例:i.imgur.com/E1TiYZX.png(右图为原图。这正是我想要做的,但圆是平滑的。)
  • 嗯...不知道,让我修补一些
猜你喜欢
  • 1970-01-01
  • 2010-09-25
  • 1970-01-01
  • 2020-06-16
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-08
相关资源
最近更新 更多