Изменение изображения в приложении C# WPF - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь изменить определенные c части изображения при нажатии на них в приложении C#. Я опишу ситуацию подробно:

Задание

Я хочу добавить графический элемент в существующее приложение C#. Графика c, которую я хочу использовать, представляет собой оболочку, похожую на: https://static.vecteezy.com/system/resources/previews/000/658/484/non_2x/snail-shell-on-white-vector.jpg

Каждый сегмент оболочки должен реагировать на события нажатия . Учитывая характер графиков c, каждый сегмент имеет уникальную форму и размер. Всего 189 сегментов. Нажатие на сегмент должно вызывать некоторые методы в коде позади. В зависимости от значений кода, сегменты должны быть окрашены в 3 этапа (пусто, наполовину, заполнено) .

Среда

Существующее приложение является C# Приложение WPF с использованием. NET framwork 4.5

Графика c существует только на бумаге, поэтому ее можно сканировать и использовать в приложении только в качестве файла изображения (любого формата)

Что я пробовал

Я загрузил графику c в элемент WebBrowser, используя его как изображение в файле HTML. Сегменты определяются HTML областями, вызовами кода для методов и наоборот через JavaScript.

Где я:

Почти все работало. Определение областей - это относительно небольшая работа. Вызов кода через JavaScript работал на удивление хорошо. Однако я не смог изменить график c из кода позади. HTML области не могут иметь CSS свойств, поэтому они не могут быть окрашены таким образом. Добавление оверлеев в DOM onclick будет работать, но это также будет означать создание 378 дополнительных изображений (189 сегментов * 2 состояния). Я бы предпочел не ...

Что мне нужно:

Некоторые подсказки, как мне это сделать. Есть ли способ сделать то, что у меня уже есть на работе? Или я совершенно на неверном пути, и есть какой-то совершенно другой подход, которого я не вижу? Я готов отказаться от того, что я сделал до сих пор, если должен. Использование внешних библиотек / сторонних инструментов будет в порядке, пока они бесплатны.

Я подумал о перестройке графика c с использованием полигонов на холсте WPF, но не хотел бы хлопот (всего 189 сегментов) из которых имеют закругленные края ...). То же самое касается перестройки графики c в SVG, продолжения «сетевого» подхода.

Отказ от графики c и использование абстракции (например, таблицы) - это последнее средство решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...