Граница в DrawRectangle

Некоторые мысли о том, как обрабатывать исключения

  • Будет ли возвращение null хорошим или плохим дизайном, зависит от исключения и того, где этот фрагмент размещен в вашей системе.

  • Если Исключением является NullPointerException, вы, вероятно, применяете блок catch несколько навязчиво (как управление потоком данных).

  • Если это что-то вроде IOException, и вы не можете ничего сделать против причины, вы должны выбросить исключение в контроллер.

  • Если контроллер является фасадом компонента, он переводит Исключение в хорошо документированный набор возможных исключений для конкретного компонента, которые могут возникнуть на интерфейсе. А для подробной информации вы должны включить оригинальное исключение в качестве вложенного исключения.

27
задан SuperBiasedMan 25 August 2015 в 09:44
поделиться

4 ответа

Вы можете сделать это, указав PenAlignment

Pen pen = new Pen(Color.Black, 2);
pen.Alignment = PenAlignment.Inset; //<-- this
g.DrawRectangle(pen, rect);
52
ответ дан 28 November 2019 в 04:50
поделиться

Если вы хотите, чтобы внешние границы прямоугольника были ограничены во всех направлениях, вам нужно будет пересчитать его относительно ширины пера:

private void DrawRectangle(Graphics g, Rectangle rect, float penWidth)
{
    using (Pen pen = new Pen(SystemColors.ControlDark, penWidth))
    {
        float shrinkAmount = pen.Width / 2;
        g.DrawRectangle(
            pen,
            rect.X + shrinkAmount,   // move half a pen-width to the right
            rect.Y + shrinkAmount,   // move half a pen-width to the down
            rect.Width - penWidth,   // shrink width with one pen-width
            rect.Height - penWidth); // shrink height with one pen-width
    }
}
6
ответ дан 28 November 2019 в 04:50
поделиться

Это не прямой ответ на вопрос, но вы можете рассмотреть возможность использования ControlPaint.DrawBorder метод. Вы можете указать стиль границы, цвет и различные другие свойства. Я также полагаю, он управляет настройкой полей за вас.

1
ответ дан 28 November 2019 в 04:50
поделиться

Думаю, нет ... но вы можете переместить положение рисования на половину размера пера в правый нижний угол

0
ответ дан 28 November 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: