如何裁剪方形图像并将其更改为圆形C#

时间:2015-12-27 13:07:17

标签: c# winforms

对于c#来说,我是一个新手,我想知道是否有可能在c#winforms中制作一个圆形的pictureBox。 我正在制作一个简单的软件,人们可以选择图片并将其设置为图片框。所以我不能要求每个用户继续使用Photoshop并使他们的图像循环。是否可以制作一个圆形图片框来裁剪图片并更新应该是PNG格式且具有透明背景的图片文件?

我目前在按钮1上的pictureBox1中设置图像的代码单击事件:

private void button1_Click(object sender, EventArgs e)
    {
        OpenFileDialog OFD = new OpenFileDialog();
        if (OFD.ShowDialog() == DialogResult.OK)
        {
            Bitmap Image = new Bitmap(OFD.FileName);
            pictureBox1.Image = Image;
            pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
        }
    }

我不知道如何做到这一点或从哪里开始搜索!一些帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

更新感谢@TaW我已更新g.SetClip(path)而不是new region

  1. 制作一个与原始尺寸和像素相匹配的新位图 格式。
  2. 从新的位图创建图形。
  3. 设置图形

  4. 剪辑到新的圈子

  5. 将原始图像绘制到新图形上。
  6. 以下是一个例子:

    public Bitmap ClipToCircle(Bitmap original, PointF center, float radius)
    {
        Bitmap copy = new Bitmap(original);
        using (Graphics g = Graphics.FromImage(copy)) {
            RectangleF r = new RectangleF(center.X - radius, center.Y - radius,
                                          radius * 2, radius * 2);
            GraphicsPath path = new GraphicsPath();
            path.AddEllipse(r);
            g.SetClip(path)
            g.DrawImage(original, 0, 0);
            return copy;
        }
    }
    

    我希望它能解决你的问题。