我正在尝试绘制像网格一样的方格纸作为画布的背景。这个网格与我发现的大多数关于如何执行此操作的解释不同,因为可以缩放画布以实现缩放。我想要做的是有一系列比例的网格线,即每 10^n 个单位。然后,网格线由于缩放而变得靠近时应该淡出。换句话说,如果 n 很大,则与该网格相关联的线应该比那些较小的 n 更暗/更重。
这在 WinForms 中很容易做到,我通过覆盖 OnPaint 并将线条的颜色定义为与下一条网格线的距离的函数来实现它。相距较远的线条比靠近的线条具有更重的权重。
我还没有弄清楚如何在 WPF 中做到这一点。我可以通过根据网格线的间距创建一条具有 StrokeThickness 的线来获得这种行为,但这仅适用于小范围的 StrokeThickness 和缩放值。如果可以将一条线定义为具有非常重的权重,但仍具有较小的 StrokeThickness,它将起作用。
即使通过使用 OnRender 实现自定义控件来做到这一点也很困难,因为我还没有找到一种可靠的方法来在呈现控件时获取控件的比例(ScaleTransform 是其中一个父控件的一部分,而不是直接父控件)。
任何关于如何实现这一目标的想法将不胜感激!