Как я могу заставить DrawGeometry рисовать вдоль линий пикселей устройства в WPF?
Я пытаюсь использовать DrawingContext.DrawGeometry
получить прямоугольник с сторонами устройства шириной в 1 пиксель.
var geometry = (defined elsewhere from a Rect {0.0, 0.0, 8.0, 18.0})
var brush = new SolidColorBrush(Color.FromArgb(30, 0xff, 0xff, 0xff));
// Note: the pen is declared with a 1.0 thickness
var pen = new Pen(new SolidColorBrush(Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF)), 1.0)
drawingContext.DrawGeometry(brush, pen, geometry);
Я подтвердил, что Rect
Я строю геометрию с целыми числами, а не с дробными точками (проверено вручную), а Pen
Я рисую геометрию с помощью 1.0
единиц в ширину.
Проблема в том, что прямоугольник рисуется на экране устройства шириной 2 пикселя. Как нарисовать этот прямоугольник на точных пикселях устройства? Я ожидаю, что при 96dpi это будет 1 пиксель.
1 ответ
Решение
Вы можете использовать DrawingContext.PushGuidelineSet для принудительного выравнивания рендеринга, когда это возможно.
Подробности и пример кода см. В этом руководстве.