Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Создание графических интерфейсов и рисование графиков

#c_sharp #cpp #c


Задание: необходимо написать программу для рисования сложных графиков (циклоиды и
все в этом роде), все было бы хорошо, но за год обучения нас учили писать только на
чистом C под консоль. А тут вдруг нужно графический интерфейс, рисование графиков,
да еще это все должно не ломаться и масштабироваться относительно окна, так еще и анимация
будет.

Подскажите, как вообще работать с графическим интерфейсом и какие средства для этого
использовать? Знаю, что есть такая вещь как Qt, знаю что есть MFC и WinAPI (насколько
я знаю, он сниться в кошмарах неокрепшим умам начинающих программистов), но что лучше,
и какие еще существуют библиотеки или среды, которые упростят эту задачу? Также, если
потребуется, могу полистать и подучить С++ или С# (но сроки горят).
    


Ответы

Ответ 1



Если говорить о чистом С, то есть два варианта: ncurses gtk+ Первый вариант - под консоль, используется псевдографика Второй вариант - полноценные графические приложения для оконного менеджера GTK+ в Linux. Остальноё всё (Qt, WxWidget, MFC, ...) это для С++. Преподы ваши - придурки полные. Насколько я ознакомился с этим списком заданий (сынуля позавчера притащил из Университета), там есть несколько заданий, НЕ связанных с GUI, чисто расчётных. Настоятельно рекомндую выбрать одно из них. Но, у них хотя бы, организовали недельные курсы по C#...

Ответ 2



Ну, вот, по поводу рисования и анимации в MFC. Если делать через GDI, то принципиальной разницы алгоритма хоть с WinAPI, хоть C# / WindowsForms, не будет: для непрерывной функции ставим pen в начало графика, а дальше точка за точкой рисуем LineTo (попутно пересчивая и масштабируя точки из оконной системы координат в нашу). Но это если ехать поскорее, без сплайнов и прочего. Для шашечек я бы действительно взял бы какой-нибудь Qt или WPF. Но, догадываюсь, что красивые-готовые компоненты графиков могут для вас не прокатить.

Ответ 3



Каждый будет тянуть одеяло в сторону своего любимого фреймворка, и я не буду исключением. В Qt 5.7 графики (в том числе и в 3D) доступны, что называется из коробки. Имеется набор примеров, содержащих полностью готовый код. Гистограммы, линейные, полярные и прочее. Поддерживаются темы, красивая анимация. Нельзя не упомянуть и местное сообщество по Qt, которое не оставит в беде, буде таковая случится. Небольшое дополнение в виду того, что в ответе был упущен момент, связанный с необходимостью рисования графиков, обозначенных в вопросе как сложные. Из-за того, что ранее QtCharts поставлялся только по коммерческой лицензии, недостающий функционал брался в основном из сторонних, поддерживаемых OpenSource-сообществом проектов. Это и замечательный QCustomPlot, и многофункциональный Qwt, а также множество других, менее известных библиотек. Разумеется, все или большая часть из них доступны к использованию и сейчас. Тем не менее, хотелось бы добавить пару слов и в защиту QtCharts, которую при поверхностном рассмотрении многие причисляют к вещи в себе. На самом деле это не так. QtCharts построен на базе функционала QGraphicsScene и соответственно может быть настроен для отображения практически любых типов графиков.

Ответ 4



Если Вам нужно только отобразить графики и не нужно вводить интерактивные данные в программу то можно воспользоваться графическими библиотеками Cairo или SDL

Комментариев нет:

Отправить комментарий