Я не могу заставить DrawBorder
работать при передаче ему нового прямоугольного объекта:
private void answered_choice_1_paint(object sender, PaintEventArgs e)
{
Size s = new Size(Math.Max(answered_choice_1.Height, icon_correct.Height) + 4, answered_choice_1.Width + 22 + this.default_margin + 4);
Point p = new Point(answered_choice_1.Location.X - 22 - this.default_margin - 2, answered_choice_1.Location.Y - 2);
Rectangle r = new Rectangle(p, s);
if (icon_correct.Location.Y == answered_choice_1.Location.Y)
{
ControlPaint.DrawBorder(e.Graphics, r, Color.Green, ButtonBorderStyle.Solid);
}
}
Однако передача прямоугольника метки работает:
private void answered_choice_1_paint(object sender, PaintEventArgs e)
{
if (icon_correct.Location.Y == answered_choice_1.Location.Y)
{
ControlPaint.DrawBorder(e.Graphics, answered_choice_1.DisplayRectangle, Color.Green, ButtonBorderStyle.Solid);
}
}
Как вы можете видеть из кода, я намереваюсь нарисовать прямоугольную границу вокруг метки answered_choice_1
и icon_correct
pictureBox, поэтому второй фрагмент кода действительно рисует прямоугольник, но я хочу нарисовать прямоугольник из первого фрагмента.
Редактировать: Я сузил это до:
int x,y;
x = answered_choice_1.Location.X - 22 - this.default_margin - 2;
y = answered_choice_1.Location.Y - 2;
Point p = new Point(x, y);
Используя обнаруженный мной отладчик, answered_choice_1.Location.Y - 2
оценивается как 210
покупка y
получает значение 0
;Это очень странно, но последовательно: если я вызову другой конструктор для прямоугольника r
, я получу тот же результат.
Любая дополнительная помощь будет принята.
Second Edit Редактирование ранее было неверным, хотя это данные, которые я видел в Visual Studio IDE.Комментарий Умберто дал мне окончательный ключ к тому, что происходило, и я одобрил его ответ.