我正在尝试添加一个与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 :(得分: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);
要显示Padding
如何为停靠和/或锚定控件生效,示例中的Label
与 BackColor
停靠左嵌套在Panel
内。 右侧屏幕截图显示带有白色背景的Panel
,以便您可以看到整个布局。
请注意Center
从Inset
到$elemMatch
的设置!!
如果您创建一个面板子类,我建议它跟踪新的自定义客户区矩形..
其他解决方案可能是: