如何在winform面板的边框上添加图像?

时间:2017-05-15 09:12:41

标签: c# .net winforms

我正在尝试添加一个与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);

2 个答案:

答案 0 :(得分:0)

试试这个

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

不是将图像添加到面板,而是指定所需的位置。

答案 1 :(得分:0)

有几种方法可以做到这一点。

这是一个简单的,对你来说可能或不够好。

我们假设装饰Image img,边框宽度为int bw

  int iw2 = img.Width / 2;
  int ih2 = img.Height / 2;

首先设置Padding

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

这不会显示,但有助于将任何停靠控件保留在边框内。

接下来,我们对Paint/OnPaint代码进行编码:

  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 here enter image description here

要显示Padding如何为停靠和/或锚定控件生效,示例中的Label BackColor 停靠嵌套在Panel内。 右侧屏幕截图显示带有白色背景的Panel,以便您可以看到整个布局。

请注意CenterInset$elemMatch的设置!!

如果您创建一个面板子类,我建议它跟踪新的自定义客户区矩形..

其他解决方案可能是:

  • 使用区域
  • 创建成型面板
  • 覆盖另一个Panel / Label / PictureBox