4

Dash-DotWPF では、パスがシーケンスから離れて描画される方法を変更できる方法はありますか? 私が描いているパスまたは小さな三角形、波など、描画パス自体に三重線を描きたいとします。私はブラシを試しましたが、それに従いませんPath。助けてください

どうも

4

2 に答える 2

3

WPF のGeometryクラスには、これを簡単に行うために必要なすべてのプリミティブがありますが、コードで行う必要があります。カスタム ラインを作成する必要がある場合、通常は にDrawing基づいて をGeometry構築しますが、あなたの場合は、Geometry3 本のラインが平行に配置された を構築し、それをストロークするだけです。

  1. から始めて、入力パスのPathGeometry.CreateFromGeometry()を取得しますPathGeometry
  2. を使用GetWidenedPathGeometry()して、必要な間隔を渡して、エッジが側線に対応する新しいジオメトリを取得します。
  3. (オプション) 必要に応じて、拡張されたジオメトリの端にあるセグメントを削除します
  4. を使用して、サイド ライン ジオメトリを元のジオメトリと結合します。CombinedGeometry
  5. 組み合わせたジオメトリをストロークして三重の線を取得します

ステップ 3 の詳細: 拡張されたジオメトリには、元の線の終点に線分があります。これにより、線の端を横切って線が引かれ、多くの状況で美的に美しく見えます。これがないと状況が良くなる場合は、サイド ライン ジオメトリを繰り返し、元のパスの終点を通過するすべての線分を削除することで、これを削除します。

上のコードは、端を打ち切らなければ約 8 行、打ち切れば 15 行かかります。

これを便利にするための秘訣は、アタッチされているコントロールのDataプロパティを効果的に強制するアタッチ プロパティを作成することです。Pathこのような添付プロパティを使用すると、次のように記述する必要があります。

<Path TripleStroke.Enable="true" Data="..." />

添付プロパティを実装し、それらにハンドラーを登録する方法を知っていれば、これは簡単なことです。そうでない場合は、添付プロパティのアプローチを実装する前に、添付プロパティをコーディングして値の強制をシミュレートする方法を数時間かけて学習することを計画してください。

アップデート

上で説明した基本的な手法は、パスに沿って任意のパターンを適用できるように拡張することもできます。例については、Expression Design ツールのカスタム ブラシを参照してください。ただし、これを行うために WPF に組み込まれているものは何もないため、自分で作成する必要があります。経験から、それは大変な作業であることがわかります。基本的な手順は次のとおりです。

最初にGeometry、既存Drawingの とエンド キャップなどのいくつかのパラメータを受け取るメソッドを作成し、によって指定されたパスに沿って指定されたDrawingを繰り返す新しい を作成します。次に、ストローク パスを簡単に描画できます。カスタム ストロークを記述する を作成し、変換メソッドを呼び出すコンバーターでを含むを使用してストロークを表示します。DrawingGeometryDrawingDrawingVisualBinding

変換メソッドを実際に実装するには:

  1. ソース図面をオブジェクトのセットに変換しGeometryDrawingます (私もサポートしましImageDrawingたが、3D システムを使用して画像を引き伸ばす必要があるため、これはより複雑です)。これは、DrawingGroupオブジェクトを再帰的に実行し、変換を追跡し、適切な変換を使用して GeometryDrawings を構築することによって行われます。
  2. 元の図面の「エンド キャップ」領域のジオメトリの一部を削除し、脇に置きます。
  3. パスに沿ってGeometryDrawing繰り返し、ジオメトリ内のすべての座標に適切な座標変換を適用してオブジェクトを繰り返し複製します。
  4. 同じ手順を使用して、ジオメトリの「エンド キャップ」セクションを処理します。

また、手順 1 では、同等のものを作成するためにGlyphRunDrawings使用されていることにも注意してください。FormattedText.BuildGeometryGeometryDrawing

于 2010-01-19T05:42:56.940 に答える
0

WPF でこれを行う方法はサポートされていません。ソリューションには、複合 Path オブジェクトまたは凝ったコード ビハインドの体操のいずれかが含まれます。特にトリプルライン パスの実装をお探しですか?

于 2010-01-19T03:07:05.953 に答える