|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
|||||||||||
Объединить несколько объектов Geometry24.10.2022, 17:29. Показов 2352. Ответов 43
Метки нет (Все метки)
Здравствуйте.
Есть у меня вот такая вот фигурка:
0
|
|||||||||||
| 24.10.2022, 17:29 | |
|
Ответы с готовыми решениями:
43
|
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
|||||||||||
| 26.10.2022, 11:04 [ТС] | |||||||||||
|
Элд Хасп, чего то не понял.
А в шаблон то можно как нибудь засунуть??
Добавлено через 26 минут Элд Хасп, А вот придумал костыль как одной кистью отрисовать. ))
0
|
|||||||||||
|
Модератор
|
||
| 26.10.2022, 11:05 | ||
|
Их и нужно двигать. Но это будет сильно медленнее. Смысл использования Geometry и Drawing, что их можно подготовить асинхронно не в UI потоке. Заморозить и передать в 1-2 UI элемента. Так как UI элементов мало, то работать будет максимально быстро. Если же делать через Шаблоны и привязки, то вся эта логика будет работать в UI потоке. Что при большом количестве элементов неизбежно будет нет-нет лагать.
0
|
||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
||
| 26.10.2022, 11:13 [ТС] | ||
|
А в какой список это кидать?
0
|
||
|
Модератор
|
||
| 26.10.2022, 11:16 | ||
|
1) Непонятно как это может повести себя при различных масштабирования; 2) Непонятно как такая длинная линия скажется на производительности - ведь таких маркеров может быть очень много.
0
|
||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
||
| 26.10.2022, 11:19 [ТС] | ||
|
Просто я не очень пойму как подготовить и как задавать трансляцию.
0
|
||
|
Модератор
|
||||
| 26.10.2022, 11:22 | ||||
|
Формируете единый Drawing для всего графика и маркеров.Из него один общий DrawingImage и передаёте его в один Image.То есть в UI потоке останется только один Image.Всё остальное будет асинхронно. Добавлено через 2 минуты Но, у вас асинхронно только геометрия создаётся. А визуализироваться она будет синхронно UI элементом Path.И для каждого маркера свой отдельный Path.При большом количестве маркеров, возможно, могут возникнуть проблемы. Добавлено через 1 минуту То есть если сравнивать Path с геометрией и Image с ней же, то конечно, Path будет шустрее. Но у вас получается большое количество отдельных Path против одного Image - в таком случае Image будет лучше.
0
|
||||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
||
| 26.10.2022, 11:25 [ТС] | ||
|
И получается что можно будет отказаться от всех ItemsContol ?
0
|
||
|
Модератор
|
|||||||||
| 26.10.2022, 11:36 | |||||||||
Добавлено через 3 минуты Worldmaster, есть ещё DrawingContext.На нём, вообще, можно рисовать как на отдельном холсте. Как по пиксельно, так и линиями, фигурами, текстом. А после завершения рисунка заморозить и передать в Image для вывода.
0
|
|||||||||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
||||||||||||||||
| 26.10.2022, 13:58 [ТС] | ||||||||||||||||
|
Элд Хасп, чет кажется так даже больше тормозить стало.
Свойство для привязки к Image
0
|
||||||||||||||||
|
Модератор
|
||
| 26.10.2022, 14:04 | ||
|
Торможение графики один из самых труднорешаемых моментов в WPF. Здесь поможет только создание различных реализаций их тестирование. Причём может оказать, что на наборе из 100 элементов быстрее одна реализация, а на наборе из 1000 - другая. Попробуйте, отключая вывод тех или иных элементов, определить проблемный участок.
0
|
||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
|
| 26.10.2022, 15:02 [ТС] | |
|
Элд Хасп, А как сделать чтобы он не менял размер изображения при отрисовке?
А то вот например углы маркеров по идее вылазят за пределы контрола, но он пытаестся ужать изображение чтобы впихнуть его в контрол и в итоге график плавает относительно осей.
0
|
|
|
Модератор
|
||
| 26.10.2022, 15:19 | ||
|
Если да, то "поиграйтесь" со свойствами Stretch и StretchDirection. Так же можно обрезать как нужно задав геометрию в свойство DrawingGroup.ClipGeometry. Добавлено через 1 минуту Worldmaster, если тормозит - попробуйте рисовать используя DrawingContext.
0
|
||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
||||||
| 26.10.2022, 15:39 [ТС] | ||||||
|
Элд Хасп, Спасибо щас поиграю.
Провел тест. Сделал вот так:
Данные заливаю каждые 1мс а обновляю картинку каждые 15мс. Видимо движение за 15 мс очень большое и кажется что оно как бы дергается. Ну и еще когда мышкой начинаешь дергать тоже вроде бы подтормаживает ...
0
|
||||||
|
Модератор
|
||
| 26.10.2022, 15:44 | ||
|
И не понял по методу Render(PlotInfo scale, DrawingGroup context) - context откуда берётся, когда замораживается?
0
|
||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
||||||||||||||||||
| 26.10.2022, 15:56 [ТС] | ||||||||||||||||||
от 2 до 3 мс. Это само построение DrawingGroup. Кстати обрезка вообще не работает никак .. (((
0
|
||||||||||||||||||
|
Модератор
|
|||
| 26.10.2022, 20:20 | |||
|
По факту, свойство ClipToBounds в Image бессмысленно.Обрезать нужно DrawingGroup перед заморозкой. Лучше делать так: Создаёте RectangleGeometry с размером всего графика. Этот Rectangle записываете первым в DrawingGroup и заливаете цветом фона. И его же записываете в свойство DrawingGroup.ClipGeometry. В результате всё что вылезет за размеры прямоугольника фона будет обрезано. Добавлено через 1 минуту Лучше попробуйте DrawingContext.
0
|
|||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
||||||||||||||
| 27.10.2022, 08:31 [ТС] | ||||||||||||||
|
Добавлено через 22 минуты
а как вот действительно создать объект маркера и заморозить его чтоли или закешировать чтобы не создавать каждый раз?? Сейчас я вот так создаю. Но для каждой точки высчитываю свои положения.
0
|
||||||||||||||
|
Модератор
|
|||
| 27.10.2022, 08:55 | |||
|
Вы писали про иногда появляющиеся лаги - думал возможно с DrawingContext удастся их избежать, Так же может быть разница из-за базового объекта. Попробуйте получить из DrawingGroup.Open(). Ещё, если верно понимаю логику DrawingContext, то им можно перерисовывать имеющийся Drawing. Правда делать это надо хоть и асинхронно, но в UI потоке. Там нужно реализовать что-то в виде бесконечного цикла в Диспетчере с самым низким приоритетом. В каждом цикле: - получили данные на текущий момент в локальные переменные; - отрисовали данные; - следующая итерация. То есть для каждой итерации используются данные на её начало. Если данные несколько раз изменились за предыдущую итерацию, то все изменения кроме последних будут проигнорированы. Добавлено через 3 минуты
0
|
|||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
|||||||
| 27.10.2022, 09:49 [ТС] | |||||||
0
|
|||||||
|
Модератор
|
||||||||
| 27.10.2022, 12:51 | ||||||||
0
|
||||||||
| 27.10.2022, 12:51 | |
|
Несколько объектов в одном файле или мегалокласс, агрегирующий классы этих объектов
Как объединить интерфейсы 2-х объектов в Remoting интерфейсе?
Как объединить несколько коллекций? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|