【问题标题】:How to add image on the border of a winform panel?如何在winform面板的边框上添加图像?
【发布时间】:2017-10-14 00:04:54
【问题描述】:

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

【问题讨论】:

  • 很难想象,更有可能你没有正确解释或解决它(因此你在这里)。可以加截图和code to reproduce the issue吗?
  • 你想让图片出现在outside the form吗?
  • 你没有用这张图片解释任何东西。尝试详细解释您要做什么以及出于什么目的。也许有人可以告诉你做一个更好的选择。
  • 我不知道如何进一步解释。我创建了一个面板,并简单地为某些事件添加了一个可点击的交叉图像。现在我希望这个十字图像出现在面板的边框上以获得更专业的外观。但是图像没有出现在面板边界之外。是否可以将其放置在面板的边界处?如果是,怎么做?
  • @Sinatr 图片应该出现在表单内的 Panel 边框上

标签: c# .net winforms


【解决方案1】:

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

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

让我们假设一个装饰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);

    

为了展示Padding 如何用于停靠和/或锚定控件,示例中有一个Label 和一个实心BackColor 停靠left 嵌套在Panel 内。 屏幕截图显示了Panel,背景为白色,因此您可以看到整个布局。

注意Pen alignmentCenterInset的设置!!

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

其他解决方案可能是:

  • 使用区域创建形状面板
  • 覆盖另一个面板/标签/图片框

【讨论】:

    【解决方案2】:

    试试这个


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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-21
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      相关资源
      最近更新 更多