如何在winform面板的边框上添加图像?
Posted
技术标签:
【中文标题】如何在winform面板的边框上添加图像?【英文标题】:How to add image on the border of a winform panel? 【发布时间】: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 边框上 【参考方案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 alignment从Center
到Inset
的设置!!
如果您创建一个面板子类,我建议它跟踪新的自定义客户区矩形..
其他解决方案可能是:
使用区域创建形状面板 覆盖另一个面板/标签/图片框【讨论】:
【参考方案2】:试试这个
cross_Img.Location = new System.Drawing.Point(488, 429);
cross_Img.Margin = new Padding(0, -15, -15, 0);
// panel1.Controls.Add(cross_Img);
不要将图像添加到面板,而是指定所需的位置。
【讨论】:
以上是关于如何在winform面板的边框上添加图像?的主要内容,如果未能解决你的问题,请参考以下文章
如何更改或添加图像到 staffdotnet.collapsiblepanel 面板标题?