Насколько мне известно, графические координаты Windows Forms: от y = 0 (самый верхний край) до высоты-1 (самый нижний край) в направлении Y и от x = 0 (самый левый край) до Width-1 (крайний правый край)) в направлении X.
, если это так, первый пример не будет работать, поскольку вы рисуете только за пределами видимой области, однако второй пример будет работать, когда вы рисуете вертикальную линию, которая рисует только один пиксель за пределами видимой области.
Попробуйте изменить на 1079 и посмотреть, если он рендерится.В противном случае попробуйте увеличить y в первом примере и выяснить, где он останавливается.У вас есть форма Chrome, чтобы принять во внимание?Например, форма окна формы с высотой = 1080 может использовать 20 пикселей в строке заголовка и нижнем крае, поэтому фактическая видимая область может быть меньше.
Изменить 1
Изменено после добавления кода в вопрос.Я изменил код следующим образом, и он рисует идеальный прямоугольник в моей системе.Просто из интереса, почему вы создаете графический объект в конструкторе формы?Вы должны использовать тот, который предоставляется аргументами события рисования.Графический объект будет создаваться и удаляться средой выполнения .NET каждый раз, когда форма перерисовывается.
Также я добавил обработчик события изменения размера, чтобы перекрасить форму.Без этого при изменении размера он не устанавливает прямоугольник на новый размер формы.
Можете ли вы проверить это и сказать мне, если у вас возникла такая же проблема?Кроме того, какие еще свойства мне не хватает (например, Form.Borderstyle и т. Д.), Чтобы получить ту же проблему, что и вы?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Paint += new PaintEventHandler(Form1_Paint);
this.Resize += new EventHandler(Form1_Resize);
}
void Form1_Resize(object sender, EventArgs e)
{
this.Invalidate(true);
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
using (Pen pen = new Pen(Color.Red, 2.0f))
{
e.Graphics.DrawRectangle(pen, new Rectangle(0, 0, ClientSize.Width-1, ClientSize.Height-1));
}
}
}