Как получить правильные границы для панели форм Windows C # для рисования границы - PullRequest
1 голос
/ 13 октября 2011

Итак, я пытаюсь нарисовать нижнюю границу для панели. У меня есть этот код:

private void pnl_Paint(object sender, PaintEventArgs e)
{
    ControlPaint.DrawBorder(e.Graphics, ((Panel)sender).ClientRectangle, Color.Transparent, 0, ButtonBorderStyle.None, Color.Transparent, 0, ButtonBorderStyle.None, Color.Transparent, 0, ButtonBorderStyle.None, SystemColors.ControlDarkDark, 1, ButtonBorderStyle.Solid);
}

Я также заменил ClientRectange на DisplayRectangle и Bounds, и все они дают тот же результат, что и на рисунке.

Я пытаюсь достичь нижней границы, проходящей через персиковый фон (используется для отображения размера панели)

screenshot

1 Ответ

1 голос
/ 13 октября 2011

Измените свойство Padding на следующее:

pnl.Padding = new Padding(0, 0, 0, 1);

Так как вы просто пытаетесь нарисовать линию, нарисуйте линию:

private void pnl_Paint(object sender, PaintEventArgs e) {
  e.Graphics.DrawLine(Pens.Black, new Point(0, pnl.ClientSize.Height - 1), new Point(pnl.ClientSize.Width, pnl.ClientSize.Height - 1));
}

И убедитесь, что сделали недействительным изменение размера:

private void pnl_Resize(object sender, EventArgs e) {
  pnl.Invalidate();
}
...