List<Point>
には約500ポイントが含まれています。これらの点はパスとして描かれるはずです。しかし、しばらくの間、私は "ポイントのみ"モードに切り替えることができる必要があります。これは、連続したラインではなく、ラインが基づいているポイントだけを表示します。ドットのリストを描画する実行方法(パスではなく)
非常にパフォーマンスではありませんItemsControl
を使用して簡単な解決策が見つかった場合:Path
-objectを使用して私のラインを描画するときに、パフォーマンスがはるかに優れている(それは連続パスではなく、単一のドットだ
<ItemsControl ItemsSource="{Binding Line}">
<ItemsControl.ItemContainerStyle>
<Style TargetType="FrameworkElement">
<Setter Property="Canvas.Left" Value="{Binding X}" />
<Setter Property="Canvas.Top" Value="{Binding Y}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="Point">
<Ellipse Fill="GreenYellow" Width="2" Height="2" Margin="-1,-1,1,1"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
を):
<Path Data="{Binding Path=Line, Converter={StaticResource ResourceKey=PointsToPath}}"
Stroke="GreenYellow"
StrokeThickness="2"/>
私の行のポイントを描画するときに同じ(または少なくとも似たような)パフォーマンスを達成する方法はありますか?描画されたドットは、今のところ一定の形状やサイズにする必要はありません。
Most performant way to graph thousands of data points with WPF?この質問が見つかった場合、彼らは最大100000点を話しています - 私はより簡単な方法を見つけることを願っています私は私の場合、より少ないポイントで対処しているからです。
私はただ、関心の外に少なくとも15 FPS
は 'allowTransparency'を有効にしていますか? –
あまりにも多くの可能性があります。特に、あなたがすでに試したことを示す[mcve]がないことが挙げられます。あなたが見つけた質問には、実際にはいくつかのオプションが含まれています。あなたは "より簡単な方法"を望んでいますが、それらのいくつかの回答のうちどれと比較していますか?いくつかは私に悪いように見えません。他のオプションとしては、 'DrawingVisual'を使うこと、オブジェクトのコンテキストに直接レンダリングすること、または独自の' Drawing'を組み込むことなどがあります。質問を絞り、改善してください。 –
私はそれを試してみましたが、もし私が50000を持っていても、読み込まれたときには遅れがあります。一度描けばすべてがスムーズです。あなたが毎秒新しいポイントをロードしていない場合、私はあなたが減速が他の場所にあると思う。 –