У меня есть List<Point>
, содержащий около 500 баллов. Эти точки должны быть нарисованы как путь. Но время от времени мне нужно переключиться в режим «Только точки», который показывает не непрерывную линию, а только точки, на которых основана моя линия.Простой способ нарисовать список точек (вместо пути)
Если найдено простое решение, используя ItemsControl
что не очень производительный:
<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
-объект, производительность намного лучше (но это непрерывный путь, а не одиночные точки):
<Path Data="{Binding Path=Line, Converter={StaticResource ResourceKey=PointsToPath}}"
Stroke="GreenYellow"
StrokeThickness="2"/>
есть ли способ, чтобы достичь того же (или, по меньшей мере, аналогичный) производительность при просто рисунок точки моей линии? Нарисованная точка не должна быть в определенной форме или размере на данный момент ...
Если вы нашли этот вопрос: Most performant way to graph thousands of data points with WPF?, но там они говорят о до 100 000 пунктов - я надеюсь найти более простой способ , так как я имею дело с намного меньшим количеством очков в моем случае.
мне нужно, чтобы эти точки обращаются в интерактивном режиме как можно более гладко, по меньшей мере 15 FPS
разрешен разрешающая способность? –
Есть слишком много возможностей, особенно учитывая отсутствие [mcve], показывающее, что вы уже пробовали. Вопрос, который вы нашли, фактически включает в себя ряд опций; вы хотите «более простой способ», но по сравнению с теми, кто отвечает за несколько ответов? Некоторые мне кажутся не такими уж плохими. Другие варианты включают использование «DrawingVisual», либо рендеринг непосредственно в контексте объекта, либо создание для него собственного «Drawing». Уточните и улучшите вопрос. –
Я просто попробовал, и даже если у меня есть 50000, есть только задержка, когда они загружаются. После рисования все становится гладким. Если вы не загружаете новые очки каждую секунду, я думаю, что замедление происходит в другом месте. –