在椭圆形图片框周围绘制边框

时间:2017-04-21 09:40:21

标签: c# winforms

我是一个椭圆形的图片框(下面的代码)。我想在图片框周围添加边框。我已经尝试添加第二个矩形,但这只会使我的区域变小。有没有办法建立边界?

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

class OvalPictureBox : PictureBox
{
    public OvalPictureBox()
    {

    }

    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);
        }
    }

    private void InitializeComponent()
    {
        ((System.ComponentModel.ISupportInitialize)(this)).BeginInit();
        this.SuspendLayout();
        // 
        // OvalPictureBox
        // 
        ((System.ComponentModel.ISupportInitialize)(this)).EndInit();
        this.ResumeLayout(false);
    }
}

修改

我明白了。我只是在图片框中画一个椭圆。

float penWidth = 5F;
Pen myPen = new Pen(Color.FromArgb(242, 141, 1), penWidth);
e.Graphics.DrawEllipse(myPen, new RectangleF(new PointF(0, 0), new 
SizeF((float)(portraitPicture.Width - 1), portraitPicture.Height - 1)));
myPen.Dispose();

有更清洁或更好的方式吗?或者这是最好的方式吗?

1 个答案:

答案 0 :(得分:1)

只需绘制比您已有的椭圆大的椭圆。但是应该首先绘制这个椭圆,否则它将覆盖另一个椭圆。

它应该更大?边框宽度:)