2017-04-21 8 views
1

私は楕円形の絵文字を持っています(下のコード)。私はpictureboxの周りに境界線を追加したい。私はすでに二番目のrectを追加しようとしましたが、これは私の領域を小さくしました。国境を作る方法はありますか?楕円形の絵の周りに枠を描きます

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

EDIT

私はそれを考え出しました。私はただpictureboxに楕円を描きます。

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

ああ私はあなたがhahaを理解していなかったか:)ありがとう! – Backs

答えて

1

すでに持っているものよりも大きい楕円を描くだけです。しかし、この楕円を最初に描画しなければなりません。そうでなければ、もう一方の楕円を覆います。

どのくらい大きくする必要がありますか?ボーダー幅:

+0

私はあなたのawnserを使用する場合、私はちょうど5pxの厚い画像があるように思えます。何が間違っているのですか? 厚さ5pxのものをお届けします。 – Backs

+0

したがって、この楕円を10ピクセル大きくする必要があります。 –

+0

楕円を描くときには問題ではないようですが、リージョンを5pxの太い円のようにするだけです – Backs

関連する問題