1 / 14

Графики с помощью MFC

Графики с помощью MFC. Рябова Анна Сергеевна ryabova.anna@gmail.com. Пакет Microsoft Foundation Classes. MFC — библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений для Microsoft Windows путем использования богатого набора библиотечных классов.

kalb
Download Presentation

Графики с помощью MFC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Графики с помощью MFC Рябова Анна Сергеевна ryabova.anna@gmail.com

  2. Пакет Microsoft Foundation Classes • MFC — библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений для Microsoft Windows путем использования богатого набора библиотечных классов.

  3. Создать проект типа MFC Application • Dialog based • MFC in a static library

  4. В простейшем случае программа, написанная с помощью MFC, содержит два класса, порождаемые от классов иерархии библиотеки: класс, предназначенный для создания приложения, и класс, предназначенный для создания окна. class CTestGraphApp : public CWinApp { … }; class CTestGraphDlg : public CDialog { };

  5. Область для рисования • Поместить на диалог элемент StaticText • Через окно свойств задать ему уникальный IDIDC_GRAPHили MYGRAPHили G100500 • Связать с элементом переменную: • Сложный способ • Объявить переменную типа CStatic в классе диалогового окна CStatic m_DrawArea; • Связать переменную и элемент DDX_Control(pDX, IDC_GRAPH, m_DrawArea); в методе DoDataExchange

  6. Область для рисования • Связать с элементом переменную: • Простой способ • Правой кнопкой мыши на элементе • Выбрать Add Variable • Настроить категорию Control, тип CStatic, имяm_DrawArea • Нажать OK

  7. Рисование по кнопке • Добавить кнопку на диалоговое окно • Создать метод, вызывающийся при нажатии на кнопку • Двойной щелчок по кнопке • Add Event Handler механизмпо правой кнопке мыши

  8. Device context • CClientDC – класс, который позволяет выводить графику в рабочей области окна. • Рисование происходит на так называемом контексте устройства (Device context). Идея следующая: рисуем на некотором абстрактном DC. Если DC связать с окном на экране, то рисование будет в происходить в окне; если связать его с принтером – то на принтере; если с файлом – то, соответственно, в файл. • Если рисование происходит внутри функции OnDraw, то в качестве параметра функции передается указатель на уже созданный приложением DC, поэтому его можно просто использовать, не заботясь о создании и удалении. • Если рисование происходит в какой-то другой функции (в ответ на какое-нибудь событие, например, при нажатии кнопки), то этот контекст нужно получить. Это делается так: CClientDC dc(this);

  9. Рисуем график void CGraphDlg::OnBnClickedButton1() { //Создаем контекст, в котором будем рисовать CClientDC dc(&m_DrawArea); //Узнаем размеры прямоугольника CRect rc; m_DrawArea.GetClientRect(&rc); int w = rc.Width(); int h = rc.Height(); int x_start = 10; int y_start = h-10; //Рисуем … }

  10. //Рисуем CPen pnPenBlack(PS_SOLID,1,RGB(0,0,0)); CPen * pOldPen = dc.SelectObject(&pnPenBlack); dc.FillSolidRect(rc,RGB(255,255,255)); dc.MoveTo(x_start - 5,y_start); dc.LineTo(x_start + w-15, y_start); dc.MoveTo(x_start,y_start+5); dc.LineTo(x_start, y_start-h+15); CPen pnPenRed(PS_SOLID,1,RGB(255,0,0)); dc.SelectObject(&pnPenRed); dc.MoveTo(x_start, y_start); for(int i = 3; i < w-x_start-2; i+=3) { dc.LineTo(x_start + i, y_start - int(h/3*(1 - sin((float)i)))); } dc.SelectObject(pOldPen);

  11. Результат

  12. Задание 4 • Создать приложение, в котором будет изображен график заранее заданной функции с параметрами • Сделать параметры доступными для редактирования • Перерисовывать график при изменении параметров (можно по кнопке) по желанию: • Масштабирование системы координат • Опция для отрисовки нескольких графиков в одной области

  13. Пример ax^2 + bx + c

More Related