2017-05-15 7 views
2

私はWinフォームwinformパネルの枠に画像を追加するにはどうすればいいですか?

の境界線をオーバーラップするイメージを追加しようとしていますが、それだけで私は余裕を追加しようとしたが、それがないパネルボーダー

内の画像を表示全く動作しない

cross_Img.Location = new System.Drawing.Point(Panel1.Size.Width - 15, -5); 
cross_Img.Margin = new Padding(0, -15, -15, 0); 
Panel1.Controls.Add(cross_Img); 
+0

あなたはそれを正しく説明したり解決したりしていない可能性が高いと思います。スクリーンショットと[問題を再現するコード](https://stackoverflow.com/help/mcve)を追加できますか? – Sinatr

+0

画像を[フォームの外に]表示しますか(http://stackoverflow.com/q/3379306/1997232)? – Sinatr

+0

あなたはこの画像で何も説明していません。何をしようとしているのか、どのような目的のために詳細に説明してください。たぶん誰かにあなたに言うことができるより良い選択肢があります。 –

答えて

0

これを行うにはいくつかの方法があります。

ここには単純なものがありますが、それはあなたのために十分かもしれません。

Image imgと境界線の幅をint bwとしましょう。 Paddingを設定することにより、

​​

スタート:

adornedPanel1.Padding = new Padding(bw, ih2 + bw, iw2 + bw, bw); 

これは表示されませんが、どのがあなたの国境の内側にコントロールをドッキング保つのを助けます。

次我々はPaint/OnPaintコードコード:ドッキングおよび/またはアンカーコントロールのPadding作品は例が固体BackColorLabelがにをドッキングしたかを示すために

Rectangle cr = adornedPanel1.ClientRectangle; 
    Rectangle r = new Rectangle(0, ih2, cr.Width - iw2, cr.Height - ih2); 

    using (Pen pen = new Pen(Color.MediumSlateBlue, bw) 
     { Alignment = System.Drawing.Drawing2D.PenAlignment.Inset}) 
     e.Graphics.DrawRectangle(pen, r); 
    e.Graphics.DrawImage(img, cr.Right - img.Width, 0); 

enter image description hereenter image description here

は、Panelの内部にネストされたとなります。 の右のスクリーンショットは白い背景のPanelを示しているので、全体のレイアウトを見ることができます。

CenterからInsetまでのPen alignmentの設定に注意してください!

あなたが..私はそれが新しいカスタムクライアント領域の四角形を追跡示唆パネルのサブクラスを作成する場合

他の解決策は次のようになります。

  • の重ねを地域を用いて成形パネルを作成します。他のPanel/Label/PictureBox
+0

あなたの答えに感謝します。これはとても役に立ちました – Avy

0

試してみる


cross_Img.Location = new System.Drawing.Point(488, 429); 
cross_Img.Margin = new Padding(0, -15, -15, 0); 
// panel1.Controls.Add(cross_Img); 

代わりのパネルに画像を追加して、所望の位置を指定します。

関連する問題