4

現在、マッピングアプリ用にいくつかのタイル(小さな正方形の画像)を描画しています。

これらのタイルに図形を描画するためにWPFを使用しています。

描画されるポリゴンを構成する地理空間座標のリストがあります。

これらのポリゴンを構成する地理空間座標は、ピクセル座標に変換されます。

タイルは、さまざまな設定レベルの詳細で作成されます。

これらの詳細レベルのほとんどで、図面は問題ありません。しかし、特定のレベルでは、視覚的なアーティファクトがスパイクまたはラインの形で表示されます。

次に例を示します。これらの画像は3つの異なる詳細レベルにあり、1つは問題を示し、2つは問題が発生していない側にあります。

この画像は最高の詳細レベルであり、問​​題ありません。

OK画像

この画像は中程度の詳細レベルであり、スパイクを示しています(道路85に沿ったものが最も見つけやすいです):

悪い画像

この画像は最も低い詳細レベルにあり、問題ありません。

ここに画像の説明を入力してください

スパイクは、ポリゴン内の2つの線が互いに近づいたり、密なポイント(収束)を形成したりしたときに発生するように見えます。

ソースデータを確認しましたが、これらのアーティファクトは存在しません(これは、ほとんどの場合正しくレンダリングされるという事実によっても確認されています)。

次の容疑者は座標変換プロセスでしたが、もう一度確認したところ、生成されるポイントはこのように描画されるべきではありません。

そのため、WPFが原因であり、独自のコードで可能な限り問題を修正することはできないため、困難な状況に置かれています。

君たちは前にこのようなものを見たことがありますか?

修正は素晴らしいでしょう;)

現時点では、この問題に我慢するか、Direct2Dの使用に切り替える必要があるようです。プロセス内でシングルスレッド化されているため、GDI+レンダリングからはすでに移行しています。

4

1 に答える 1

0

解決策は、PenオブジェクトのLineJoinプロパティを「Round」に変更することです。

http://msdn.microsoft.com/en-us/library/system.windows.media.pen.linejoin.aspx

http://msdn.microsoft.com/en-us/library/system.windows.media.penlinejoin.aspx

コメントでこの答えを提供してくれたMoozheに感謝します。

于 2012-10-17T09:49:43.407 に答える