我使用了这个主题的建议: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);
}
}
我应该在此方法中添加什么?