2 回答

TA贡献1876条经验 获得超5个赞
在您的装饰器类中,您可以尝试其中一些选项和它们的组合......这就是我在装饰器中使用的来消除模糊线条和模糊图标:
RenderOptions.SetEdgeMode(this, EdgeMode.Aliased);
RenderOptions.SetBitmapScalingMode(this, BitmapScalingMode.NearestNeighbor);
SnapsToDevicePixels = true;
UseLayoutRounding = true;
不幸的是,您自己提供的答案有时是唯一的答案。偏移 0.5,将画笔宽度设置为 1.0001 等是非常常见的解决方法。WPF 试图通过抗锯齿来变得聪明,但是对于 1 像素宽度/高度线和其他类型的元素,它们并没有做到这一点。

TA贡献2036条经验 获得超8个赞
玩弄各种选项后,我发现,抵消left并right通过.5调用之前DrawLine修复这个问题。这似乎也印证了我的亚像素理论。
left.Offset(5, 5);
right.Offset(5, 5);
drawingContext.DrawLine(_pen, left, right);
虽然这确实有效,但我发现它是一个非常不令人满意的解决方案。我的绘图逻辑很可能会变得更复杂,我不想经常处理半像素偏移。
我希望其他人可以为我指出一种“更正确”的处理方式。
- 2 回答
- 0 关注
- 252 浏览
添加回答
举报