Как визуализировать формулу в WPF или WinForms
Мне нужно иметь способ нарисовать математическую формулу в Windows Forms или WPF. Некоторый контроль «FormulaTextBox» будет именно тем, что мне нужно.
Я не спрашиваю о полной реализации LaTEX, но, по крайней мере, что-то помимо возможностей RichTextBox, с разделительными линиями, квадратными корнями и т. Д.
PS C # настолько силен. Метод рисования формул с C # (.NET) должен быть с нами!
- В чем разница между библиотекой пользовательского контроля и библиотекой пользовательского контроля?
- Конструктор UserControl с параметрами в C #
- Как включить поддержку дизайна в пользовательском элементе управления?
- Удаление пользовательских элементов управления WPF
- Как получить полный URL-адрес страницы, на которой я нахожусь в C #
Были найдены решения:
-
Это решение использует библиотеку MathTex (MimeTex в прошлом) для генерации gif-файлов из строк типа TeX.
Минусы :-
Нет версии Windows, поддерживаемой и протестированной в библиотеке. В этой статье рассматриваются утечки памяти и другие проблемы, которые могут возникнуть из-за этого. Нужно настроить и поддерживать версию Windows самостоятельно.
-
Общий подход имеет неестественный дизайн для winforms или WPF. Хотя он может поместиться в Интернете, он выглядит далеко не столь оптимальным для winforms.
-
От примера статьи многое можно сделать до реального рабочего контроля (всегда есть что-то делать, но я хотел бы получить более готовое решение)
-
- Текстовое свойство в UserControl в C #
- «Коллекция Controls не может быть изменена, поскольку элемент управления содержит блоки кода"
- Анимация WPF: привязка к атрибуту «To» анимации раскадровки
- Как добавить событие в UserControl в C #?
- Как WPF UserControl наследует WPC UserControl?
- Наследование с помощью UserControl в WPF
Вот список вариантов, вытащил из нескольких веб-страниц в Интернете, а также несколько похожих вопросов по SO
- WPF-Math , библиотека WPF для отображения разметки TeX, связанной с математикой.
- gNumerator – это элемент управления WinForms, который отображает MathML . Это родной C #, но, похоже, довольно старый.
- Math Expressions , коммерческий элемент управления WinForms для отображения и редактирования математических уравнений. Примечание.
- Существует неофициальный порт JMathTex для управления C # WPF
- Версия Windows для редактора LaTex Lyx использует встроенную библиотеку MikTex, на которую вы можете взглянуть. Я где-то упоминал, что пакет
tex4ht
отображает математические уравнения на изображения - MimeTex / MathTex , как вы уже упоминали
- Вы также можете использовать элемент управления
WebBrowser
и просто локально включать одну из многих библиотек javascript для рендеринга LaTex. - Вы можете заложить работу в Microsoft Word ( пример – требуется, чтобы пользователи установили MS Word! )
Возможно, вы можете использовать API Wolfram Alpha для извлечения изображений.
Если вам нужно что-то помимо возможностей RichTextBox для рендеринга pie, divisions и корней sqr и т. Д., Вы можете просто использовать WebBrowserControl (s) в качестве текстового поля. Затем, чтобы отобразить формулу, вы можете использовать методы, показанные на этой веб-странице, сохранить ее на рабочем столе и открыть html-файл:
http://www.wjagray.co.uk/maths/ASCIIMathTutorial.html
Очевидно, вам понадобится специальный синтаксис (или специальные кнопки калькулятора), чтобы ввести формулу, и я угадываю, глядя на файл customisations.js, управляющий этой веб-страницей, и вы тоже можете составить свой собственный список операторов и функций.
Вот что я сделал бы, если ни одно из специальных решений .NET не будет работать для вас:
Это немного взломанный, но он будет работать, и ваши пользователи не будут знать разницу. Загрузите библиотеку Mathjax . Когда ваш пользователь входит в уравнение, вы можете преобразовать уравнение в LaTex или MathML. Затем вы берете LaTex или MathML и генерируете HTML-файл, который ссылается на Mathjax, и отображает файл в вашем маленьком окне WebBrowser (действительный как для WinForms, так и для WPF). Это не должно требовать подключения к Интернету.
Как я уже сказал, ваши пользователи не будут более мудрыми.