Я пытаюсь изменить определенные 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 и использование абстракции (например, таблицы) - это последнее средство решения.