C# 在Windows窗体的面板内绘制矩形时,如何删除边距?

C# 在Windows窗体的面板内绘制矩形时,如何删除边距?,c#,winforms,C#,Winforms,首先,就上下文而言,我是C#的初学者,我正在玩弄表单 我曾尝试在窗体(“Form1”)上的面板(“myPanel”)上绘制一个矩形,但有一个边距或某种填充,我无法删除 我已将“myPanel”的“padding”和“margin”属性设置为0,但未成功 代码是: 结果的屏幕截图: 如何删除矩形与左内侧和上边缘之间的填充?我天真的期望矩形从左上角开始 任何帮助都将不胜感激。左上角的坐标为x=0,y=0。但您也应该记住矩形边框的宽度。如果您希望矩形边框正好适合包含它的面板,则应跨入边框宽度的一半

首先,就上下文而言,我是C#的初学者,我正在玩弄表单

我曾尝试在窗体(“Form1”)上的面板(“myPanel”)上绘制一个矩形,但有一个边距或某种填充,我无法删除

我已将“myPanel”的“padding”和“margin”属性设置为0,但未成功

代码是:

结果的屏幕截图:

如何删除矩形与左内侧和上边缘之间的填充?我天真的期望矩形从左上角开始


任何帮助都将不胜感激。

左上角的坐标为x=0,y=0。但您也应该记住矩形边框的宽度。如果您希望矩形边框正好适合包含它的面板,则应跨入边框宽度的一半:

private void myPanel_Paint(object sender, PaintEventArgs e)
{
    float borderWidth = 5f;
    float topLeftx = borderWidth / 2;
    float topLefty = borderWidth / 2;
    float width = panel2.ClientSize.Width - borderWidth;
    float height = panel2.ClientSize.Height - borderWidth;

    Graphics g = e.Graphics;
    Pen pen = new Pen(Color.Black, borderWidth);
    g.DrawRectangle(pen, topLeftx, topLefty, width, height);
}
结果:


面板的内部有自己的坐标,因此topLeftx=0,topLefty=0。不要使用
myPanel。位置
,图形应该位于
myPanel.ClientRectangle
@LarsTech这是另一个控件,与
myPanel
无关,那么我假设OP想要
myPanel.ClientSize
。现在还不清楚plotWindow在哪里发挥作用。@Larstop明确表示,他希望左边缘和上边缘适合:“如何删除矩形与左边缘和上边缘内侧之间的填充?”。所以由OP来决定这里的高度和宽度,我要用plotWindow,它应该是我的面板。称之为OP方面的打字错误。
private void myPanel_Paint(object sender, PaintEventArgs e)
{
    float borderWidth = 5f;
    float topLeftx = borderWidth / 2;
    float topLefty = borderWidth / 2;
    float width = panel2.ClientSize.Width - borderWidth;
    float height = panel2.ClientSize.Height - borderWidth;

    Graphics g = e.Graphics;
    Pen pen = new Pen(Color.Black, borderWidth);
    g.DrawRectangle(pen, topLeftx, topLefty, width, height);
}