WPF Pen DrawingVisual

Я работаю с WPF DrawingVisual и Pen и столкнулся с проблемой.

Когда я рисую DrawingVisual с помощью Pen, скажем, прямоугольник следующим образом:

Pen StrokePen = new Pen();
StrokePen.Brush = Brushes.SkyBlue;
StrokePen.Thickness = 6;

DrawingVisual dv = new DrawingVisual
DrawingContext dc = dv.RenderOpen();
dc.DrawingRectangle(......., StrokePen, ......);
dc.Close();

Я обнаружил, что половина Stroke покрывает прямоугольник следующим образом:

введите здесь описание изображения

Поэтому, если Толщина пера слишком велика, так что она даже больше, чем прямоугольник, прямоугольник исчезнет (весь прямоугольник будет покрыт обводкой).

Могу ли я настроить некоторые параметры так, чтобы обводка (перо), нарисованная на прямоугольнике, не покрывала прямоугольник (рисовала только за стороны прямоугольника)

Спасибо.


person user1184598    schedule 17.07.2012    source источник


Ответы (2)


Вы можете просто нарисовать прямоугольник дважды, сначала пером, затем кистью:

using (DrawingContext dc = dv.RenderOpen())
{
    ...
    dc.DrawingRectangle(null, StrokePen, ...); 
    dc.DrawingRectangle(FillBrush, null, ...);
    ....
}
person Clemens    schedule 17.07.2012

В wpf граница прямоугольника является его внутренним содержимым, поэтому нет никакого способа заставить его быть за пределами прямоугольника. Но вы можете настроить размер прямоугольника, чтобы компенсировать Pen.Thickness.

person Rafal    schedule 17.07.2012