看看这篇文章:在物理设备像素上精确地画线
UPD
链接中的一些有价值的报价:
线条看起来模糊的原因是我们的点是线条的中心点而不是边缘。笔宽为 1 时,边缘精确地绘制在两个像素之间。
第一种方法是将每个点四舍五入为一个整数值(捕捉到一个逻辑像素),并给它一个笔宽一半的偏移量。这确保了线的边缘与逻辑像素对齐。
幸运的是,milcore(MIL 代表媒体集成层,即 WPF 渲染引擎)的开发人员为我们提供了一种方法来指导渲染引擎在物理设备像素上精确地对齐逻辑坐标。为此,我们需要创建一个 GuidelineSet
protected override void OnRender(DrawingContext drawingContext)
{
Pen pen = new Pen(Brushes.Black, 1);
Rect rect = new Rect(20,20, 50, 60);
double halfPenWidth = pen.Thickness / 2;
// Create a guidelines set
GuidelineSet guidelines = new GuidelineSet();
guidelines.GuidelinesX.Add(rect.Left + halfPenWidth);
guidelines.GuidelinesX.Add(rect.Right + halfPenWidth);
guidelines.GuidelinesY.Add(rect.Top + halfPenWidth);
guidelines.GuidelinesY.Add(rect.Bottom + halfPenWidth);
drawingContext.PushGuidelineSet(guidelines);
drawingContext.DrawRectangle(null, pen, rect);
drawingContext.Pop();
}