Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在winform面板的边框上添加图像?_C#_.net_Winforms - Fatal编程技术网

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

C# 如何在winform面板的边框上添加图像?,c#,.net,winforms,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); 试试这个 指定所需位置,而不是将图像添加到面板。有几种方法可以做到这一点 这

我试图添加一个重叠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);
试试这个



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

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

这里有一个简单的例子,可能对你来说不够好,也可能不够好

让我们假设装饰
图像img
和边框宽度
intbw

  int iw2 = img.Width / 2;
  int ih2 = img.Height / 2;
首先设置一个
填充

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

要显示
填充
如何用于停靠和/或锚定控件,示例中有一个
标签
,其背景色为实心
停靠在
面板
内的左侧。右侧的屏幕截图显示了带有白色背景的
面板
,因此您可以看到整个布局

注意从
中心到
插入的设置

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

其他解决办法可以是:

  • 使用区域创建成型嵌板
  • 覆盖另一个面板/标签/图片盒

很难想象,很可能你没有正确解释或解决它(因此你在这里)。你能添加屏幕截图吗?你想让图像出现吗?你还没有用这张图像解释任何事情。试着详细解释你想做什么,目的是什么。也许有人可以告诉你做一个更好的选择。我不知道如何进一步解释这一点。我已经创建了一个面板,并简单地添加了一个交叉图像点击某些事件。现在我希望这个交叉图像出现在面板的边框上,以获得更专业的外观。但图像并未出现在面板边界之外。可以把它放在面板的边缘吗?如果是,如何?@Sinatr图像应显示在窗体内面板的边框上
  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);