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


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

При создании объекта пера можно указать ширину пера в аргументе конструктора. Можно также изменить ширину пера с помощью метода 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);

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

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