Поделиться через


Настройка ширины и выравнивания пера

При создании объекта Pen можно указать ширину пера в качестве одного из аргументов конструктору. Ширину пера также можно изменить с помощью метода Pen::SetWidth .

Ширина теоретической линии равна нулю. При рисовании линии пиксели отцентрируются по теоретической линии. В следующем примере указанная линия рисуется дважды: один раз с черным пером шириной 1 и один раз с зеленым пером шириной 10.

Pen blackPen(Color(255, 0, 0, 0), 1);
Pen greenPen(Color(255, 0, 255, 0), 10);
stat = greenPen.SetAlignment(PenAlignmentCenter);

// Draw the line with the wide green pen.
stat = graphics.DrawLine(&greenPen, 10, 100, 100, 50);

// Draw the same line with the thin black pen.
stat = graphics.DrawLine(&blackPen, 10, 100, 100, 50);

На следующем рисунке показаны выходные данные предыдущего кода. Зеленые и черные пиксели центрируются по теоретической линии.

иллюстрация, показывающая тонкую, диагональную черную линию, окруженную широкой зеленой линией

В следующем примере указанный прямоугольник рисуется дважды: один раз с черным пером шириной 1 и один раз с зеленым пером шириной 10. Код передает значение PenAlignmentCenter (элемент перечисления PenAlignment ) методу Pen::SetAlignment , чтобы указать, что пиксели, нарисованные зеленым пером, расположены по центру на границе прямоугольника.

Pen blackPen(Color(255, 0, 0, 0), 1);
Pen greenPen(Color(255, 0, 255, 0), 10);
stat = greenPen.SetAlignment(PenAlignmentCenter);

// Draw the rectangle with the wide green pen.
stat = graphics.DrawRectangle(&greenPen, 10, 100, 50, 50);

// Draw the same rectangle with the thin black pen.
stat = graphics.DrawRectangle(&blackPen, 10, 100, 50, 50);

На следующем рисунке показаны выходные данные предыдущего кода. Зеленые пиксели расположены по центру по теоретическому прямоугольнику, который представлен черными пикселями.

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

Вы можете изменить выравнивание зеленого пера, изменив третий оператор в предыдущем примере следующим образом:

stat = greenPen.SetAlignment(PenAlignmentInset);

Теперь пиксели в широкой зеленой линии отображаются внутри прямоугольника, как показано на следующем рисунке.

Иллюстрация, показывающая тонкую черную линию в форме прямоугольника, включающую широкую зеленую линию той же формы