Canvas の背景として方眼紙のようなグリッドを描画しようとしています。このグリッドは、キャンバスをスケーリングしてズームを実装できるため、私が見つけたこれを行う方法のほとんどの説明とは異なります。私がやりたいことは、グリッド線の一連のスケール、つまり 10^n 単位ごとです。次に、ズームによってグリッド線が接近するにつれて、グリッド線がフェードアウトするはずです。言い換えると、n が大きい場合、そのグリッドに関連付けられた線は、n が小さい場合よりも暗く/太くする必要があります。
これは WinForms で簡単に実行できました。OnPaint をオーバーライドし、線の色を次のグリッド線までの距離の関数として定義することで実装しました。離れている線は、近くにある線よりも重い重みが与えられました。
WPFでこれを行う方法がわかりません。グリッド線の間隔に応じて StrokeThickness を持つ線を作成することで、この動作を取得できますが、これは StrokeThickness とスケーリング値の狭い範囲でのみ機能します。非常に重いウェイトを持つ線を定義できれば機能しますが、StrokeThickness は小さくなります。
OnRender を使用してカスタム コントロールを実装してこれを行うことも困難です。これは、レンダリング中にコントロールのスケールを取得する信頼できる方法が見つからないためです (ScaleTransform は親コントロールの 1 つの一部であり、直接の親ではありません)。
この目標を達成する方法についての考えは大歓迎です!