|
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 184
|
|
WPF Поиск библиотеки для отрисовки 2D графики в WPF, аналогичной QGraphicsView в Qt22.02.2024, 16:38. Показов 4472. Ответов 42
Здравствуйте, коллеги.
Я недавно начал работать с C# и WPF после долгого опыта работы с Python и PySide6. В Qt я часто использовал виджет QGraphicsView для отрисовки графики, который предоставлял удобные функции, такие как адаптация размеров под содержимое, масштабирование и панорамирование. Однако, я обнаружил, что стандартный canvas в WPF не так удобен в использовании. При построении графики мне приходится самостоятельно увеличивать размеры листа под содержимое, а также реализовывать масштабирование и панорамирование. Я хотел бы узнать, существуют ли библиотеки для C# и WPF, которые предлагают функциональность, аналогичную QGraphicsView в Qt? Мне нужно добавить на форму виджет и отрисовывать в нем простую 2D графику. Буду благодарен за любые рекомендации. Спасибо!
0
|
|
| 22.02.2024, 16:38 | |
|
Ответы с готовыми решениями:
42
Поиск библиотеки для отрисовки графа
Что использовать для отрисовки графики? |
|
Модератор
|
||
| 23.02.2024, 13:13 | ||
|
Вот первое что попалось по поиску https://www.nuget.org/packages... f.SharpDX/
Добавлено через 4 минуты чертеж - это что за объект?Откуда вы его получает? В первую очередь, интересует как вы его сохраняете и восстанавливаете. В ООП (если точнее - в MV* паттернах) создания приложения, если у разработчика нет достаточного опыта, надо начинать с реализации хранилища. Иначе будет "грабля за граблей".
0
|
||
|
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 184
|
|
| 23.02.2024, 13:23 [ТС] | |
|
Элд Хасп, Чертеж рисуется програмно, есть 10 полей ввода, это значения параметров в мм, по ввденым данным мы осуществляем расчеты.
В результате мы получаем массив линий, каждая линия представлена массивом из координат начала и конца. Соотвествено по полученным координатам необходимо отрисовать линии и получится чертеж. Так как чертеж большой, и в нем есть мелкие элементы он должен масштабироватся, и должны удобно прокручивать чертеж. вот все требования.
0
|
|
|
Модератор
|
|||
| 23.02.2024, 13:29 | |||
|
Python, PySide6 и даже Плюсы - там есть, вроде, ООП, но почти всеми разработчиками оно полностью игнорируется. Когда смотришь исходники - как-будто на Фортран и Бейсик программу полувековой давности видишь. Шарп (уже не говоря про WPF) - требует хорошего знания ООП и умения реализации без нарушений ООП. Откройте учебник по Шарпу и в каждом будет огромный раздел посвящённый паттернам. И это "баловство" авторов. Умение реализации паттернов архиважно для Шарп-разработчика. Иначе любое приложение превращается в неустойчивую гору кривых костылей. Без ПП (процедурного программирования) - конечно, никуда не деться. Любой метод это ПП. Но архитектура приложение, его построение, функциональное разделение по объектам и их членам и т.п. - всё это должно быть реализовано согласно принципам ООП. Добавлено через 1 минуту У вас одноцветный чертёж из одинаковых линий?
0
|
|||
|
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 184
|
|
| 23.02.2024, 13:51 [ТС] | |
|
чертеж состоит из линий, есть два типа линий толщиной в 1 и 3 px, и два основных цвета соотвественно.
Добавлено через 18 минут сам чертеж нарисовать на канвасе не сложно, все данные есть, вопрос в том что у нас канвас на форме имеет размеры 390 на 390, а размеры чертежа превышают его. Сотвествено нужен контейнерс данными размерами в котором будет поле для рисования (рисование происходит програмно по вычесленым координатам).
0
|
|
|
Модератор
|
|||||||||||||
| 23.02.2024, 14:07 | |||||||||||||
Сообщение было отмечено Карян как решение
Решение
В самом простом виде, у вас должна быть некая коллекция:
Добавлено через 1 минуту
Хоть со всю Вселенную.
1
|
|||||||||||||
|
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 184
|
|
| 23.02.2024, 14:07 [ТС] | |
|
Элд Хасп, Спасибо за помощь.
0
|
|
|
Модератор
|
|||||||||||||||||||||
| 23.02.2024, 15:27 | |||||||||||||||||||||
|
Карян, отлаженный пример:
Бонусом ещё получаете возможность выбора линии, чтобы потом ещё произвести с ней какие-то действия. Например, удалить. Добавлено через 4 минуты Реализация масштабирования задача неоднозначная. Изменить размеры не проблема. Но как должна меняться толщина линии? У вас указано что линии толщиной 1 и 3 пикселя. А раз так, то при масштабировании с уменьшением их толщина станет значительно меньше пикселя и они станут не видны. Если же нужно масштабироваться только позиции и размеры элементов, то здесь не применишь трансформацию и ViewBox напрямую. Придётся придумывать способы масштабирования не затрагивающие толщину линий. Добавлено через 2 минуты Так же можно расширить функционал классов Line и LinesCollection - переместив в них всю логику по смещению и масштабированию. Добавлено через 12 минут Карян, "код отлажен" в том смысле, что что-то там выводит. Насколько правильно - я не проверял. Могут быть арифметические ошибки. Добавлено через 7 минут Карян, немного не по теме. Смотрю я на код примера что скинул выше.... И думаю, что для вас это такими дебрями выглядит, наверное. ![]() Но для WPF-разработчика это простейшие коды, которые "накидываются на коленке" за 10-20-30 минут. Искать по Nuget готовый пакет дольше будет.
1
|
|||||||||||||||||||||
|
Модератор
|
||||||||||||
| 23.02.2024, 15:45 | ||||||||||||
Сообщение было отмечено Карян как решение
Решение
1
|
||||||||||||
|
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 184
|
|
| 23.02.2024, 15:53 [ТС] | |
|
Элд Хасп, Огромное спасибо.
0
|
|
|
Модератор
|
|||||||||||||||||||||
| 24.02.2024, 18:15 | |||||||||||||||||||||
Сообщение было отмечено Карян как решение
Решение
Карян, подебажил чуток. Выявил несколько ошибок.
Вариант реализации:
0
|
|||||||||||||||||||||
|
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 184
|
|
| 24.02.2024, 18:55 [ТС] | |
|
Большое спасибо Элд Хасп за вашу помощь. Ваше решение задачи было очень ценным и полезным. Я очень ценю ваше время и усилия. Вы действительно помогли мне в моей задаче. Еще раз спасибо!
0
|
|
| 24.02.2024, 19:03 | |
|
0
|
|
|
Модератор
|
|||||||||||
| 24.02.2024, 19:40 | |||||||||||
|
wizard41, я это больше делаю для собственного "развлечения" - отвлекаюсь от своей работы.
Добавлено через 52 секунды Карян, ещё чуть упрощения.
Карян, предупреждаю. Скорее всего этот подход будет плохо работать для большего количества линий. Потестируйте на своих данных. Если будут лаги, то определите с какого количества линий они начинаются и насколько серьёзны. Возможно придётся использовать геометрию или пиксельное "рисование".
0
|
|||||||||||
|
92 / 58 / 21
Регистрация: 09.05.2019
Сообщений: 184
|
|
| 25.02.2024, 14:53 [ТС] | |
|
Элд Хасп, Подскажите пожалуйста столкнулся с такой проблемой, решил потестить программу дома, на рабочем компьютере зашел в сборку деспетчер конфигураций перевел с Debug на Release. После чего сборка собрать решение. Получившийся .exe запустил дома и тутже получил сообщение от антивируса, что программа распознана как троян. В чем может быть причина. Проверил на сайте вирус тотал вирусов нет, однако защитник виндоус блокирует программу.
0
|
|
| 25.02.2024, 14:53 | |
|
Компонент для точной отрисовки графики
Библиотеки для создания (отрисовки) схем Что выбрать для отрисовки графика в wpf?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|