Как я могу заставить DrawGeometry рисовать вдоль линий пикселей устройства в WPF? - PullRequest
1 голос
/ 20 ноября 2011

Я пытаюсь использовать 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 единиц. 1008 *

Проблема в том, что прямоугольник рисуется на экране шириной 2 пикселя устройства. Как я могу нарисовать этот прямоугольник на точных пикселях устройства? Я ожидаю, что при 96 dpi это будет 1 пиксель.

1 Ответ

1 голос
/ 20 ноября 2011

Вы можете использовать DrawingContext.PushGuidelineSet для принудительного выравнивания рендеринга, когда это возможно.

Подробнее и пример кода см. в этом руководстве .

...