带有抗锯齿C#的圆角图片框

时间:2015-10-31 15:50:32

标签: c# .net picturebox antialiasing

我使用了这个主题的建议:Rounded edges in picturebox C#使我的图片框边缘变圆。所以,我声称使用此代码的新控件:

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

class OvalPictureBox : PictureBox {
    public OvalPictureBox() {
        this.BackColor = Color.DarkGray;
    }
    protected override void OnResize(EventArgs e) {
        base.OnResize(e);
        using (var gp = new GraphicsPath()) {
            gp.AddEllipse(new Rectangle(0, 0, this.Width-1, this.Height-1));
            this.Region = new Region(gp);
        }
    }
}

但是我的问题是:我怎么能为我的控制添加抗锯齿?我读了一些像这样的主题:Possible to have anti-aliasing when drawing a clipped image?但是只使用了绘图函数,我需要在我自己的控件中实现antialias,其父级是PictureBox。

我还尝试重写OnPaint方法以使PaintEventArgs使用SmoothingMode,但我的代码很糟糕并且无法正常工作。 所以我删除了它,这就是我现在所拥有的:

protected override void OnPaint(PaintEventArgs pe)
{
    base.OnPaint(pe);

    using (var gp = new GraphicsPath())
    {
        gp.AddEllipse(new Rectangle(0, 0, this.Width - 1, this.Height - 1));
        this.Region = new Region(gp);
    }
}

我应该在此方法中添加什么?

0 个答案:

没有答案