Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263

Объединить несколько объектов Geometry

24.10.2022, 17:29. Показов 2355. Ответов 43
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Есть у меня вот такая вот фигурка:

XML
1
2
<Path Stroke="Blue" Fill="White" Data="M10,10 L20,20 L10,30 L0,20 L10,10 Z"/>
        <Path Stroke="Blue" Fill="Blue" Data="M10.5,11 L19,20 L10.5,29 Z"/>
Как мне можно объединить данные этих объектов в один, чтобы можно было использовать в шаблоне по аналогии:

XML
1
2
3
4
5
6
<Geometry x:Key="geometry.Marker">Сюда надо вставить мои Path</Geometry>
        <DataTemplate x:Key="template.ViewboxPath" DataType="Geometry">
            <Viewbox>
                <Path  Data="{Binding}" Stroke="White" StrokeThickness="2" />
            </Viewbox>
        </DataTemplate>
Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.10.2022, 17:29
Ответы с готовыми решениями:

Как объединить несколько ContextMenu?
Приветствую! Есть окно, у окна ContextMenu. В окне есть кнопка, у которой тоже ContextMenu. При вызове ContextMenu у кнопки должно...

Как я могу объединить несколько столбцов в один datagrid
Я работаю на visual studio, C#, WPF, БД на SQL. У меня есть datagrid и одна большая проблема. Мне нужно вывести в datagrid данные...

Как объединить несколько одинаковых объектов в один, просуммировав отличающееся поле
Доброго времени суток. Вопрос задан в заголовке темы. Может кто подсказать, как это сделать НЕ ИСПОЛЬЗУЯ циклы, в помощью встроенных...

43
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
27.10.2022, 13:58  [ТС]
Студворк — интернет-сервис помощи студентам
Элд Хасп, Спасибо большое. ))

А вот текст выводить пошустрее можно ли как нибудь??
Я вот так рисую для осей:

C#
1
2
3
4
5
                FormattedText formattedText = new FormattedText((beginTime+ dx).ToString("f1"), CultureInfo.CurrentCulture, FlowDirection.LeftToRight, new Typeface("Verdana"), 10, Brushes.Black, VisualTreeHelper.GetDpi(this).PixelsPerDip);
                Geometry geometry = formattedText.BuildGeometry(pt);
                GeometryDrawing ttg = new GeometryDrawing(Brushes.Transparent, _TextPen, geometry);
                ttg.Freeze();
                renderGroup.Children.Add(ttg);
но скорость рисования падает до 7 мс на кадр.. ((

Для вывода данных осей я в одельный ItemsControl создаю TextBlock. Вроде бы все норм, но мне надо при рисовании графика менять данные осей чтобы отображали бегущее значение времени.
Может можно как нибудь при создании текстовых блоков создать модель чтобы можно было по принципу MVVM обновлять значения??

Текстовые блоки пересоздаются один раз при изменении размера контрола.

Добавлено через 6 минут
То есть идея такая:
При перестройке осей создать какие нибудь Bindig что ли или что то похожее чтобы можно было обновлять данные в другом потоке а WPF уже сама бы рисовала когда ей надо.

Добавлено через 13 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
C#
1
2
3
4
5
6
7
private static readonly Drawing marker;
static MyClass()
{
    // Здесь создаёте маркер
    marker = .....;
    marker.Freeze();
}
Теперь рендеринг даже с маркерами занимает около 1,5мс.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
27.10.2022, 15:58
Цитата Сообщение от Worldmaster Посмотреть сообщение
Я вот так рисую для осей:
Графика текста это самое тяжёлое.
Нужно тоже придумывать кеширование по подобию маркера.

Значения же не произвольные. Все числовые.
Можно сделать словарь Dictionary<int, Drawing>.
Если ключ есть - забирать готовый Drawing с текстом.
Если нет, то сначала создать его и сохранить в словаре.

Добавлено через 4 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private static readonly Dictionary<int, Drawing> numbersDrawings = new();
private static Drawing GetNumberDrawing(int number)
{
    if(!numbersDrawings.TryGetValue(number, out Drawing drawing))
    {
        // Создаём текст для number и запоминаем его.
        drawing = .......
        drawing.Freeze(); 
 
        numbersDrawings.Add(number, drawing);
    }
    return drawing;
}
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
27.10.2022, 16:05  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Можно сделать словарь Dictionary<int, Drawing>.
Если ключ есть - забирать готовый Drawing с текстом.
Если нет, то сначала создать его и сохранить в словаре.
Это же время в тексте. Оно всегда конечно будет разное .. не создавать же для каждого времени свой drawing

А с биндингами никак варианта нету?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,176
Записей в блоге: 2
27.10.2022, 17:55
Цитата Сообщение от Worldmaster Посмотреть сообщение
А с биндингами никак варианта нету?
С ними думаю медленнее будет.
Можно, конечно, TextBlock'и выводить поверх графика, но вот как это в динамике себя покажет.... Не знаю.

Цитата Сообщение от Worldmaster Посмотреть сообщение
Это же время в тексте. Оно всегда конечно будет разное .. не создавать же для каждого времени свой drawing
Что в каждом рендеринге весь текст разный?
Он, конечно, будет меняться, но не так же что каждый раз весь.
Иначе его будет просто не прочитать.

Реализацию со словарём показал для динамически создаваемого нужного текста.
Единственное, что в него можно добавить, это очистку время от времени, если есть опасность накопления очень большего количества устаревших данных.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.10.2022, 17:55

Несколько объектов в одном файле или мегалокласс, агрегирующий классы этих объектов
Вопросом я задался из предыдущего обсуждения. Там меня успокоили по моему вопросу, но навели на сотню новых :) Для контекста предыдущее...

Объединить несколько for в один
Как пример у меня есть 3 for'a: for( ; ; ) { for( ; ; ) { for( ; ; ) { //что-то делаю } }

Как объединить интерфейсы 2-х объектов в Remoting интерфейсе?
Доброго времени суток! Уважаемые гуру, нужна ваша помощь. Пишу приложение на базе Remoting. Возникла проблема в оранизации Remoting...

Объединить несколько файлов в один
Такой вопрос. Дано множество файлов txt, в них таблицы типа Имя(таб)возраст(таб)пол(таб)телефон(таб)дата ...

Как объединить несколько коллекций?
Делаю для тренировке игру. у меня есть несколько классов под каждый класс есть свой лист в котором хранятся экземпляры этих классов. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
44
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru