14
Графики с помощью MFC Рябова Анна Сергеевна [email protected]

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

  • Upload
    kalb

  • View
    102

  • Download
    3

Embed Size (px)

DESCRIPTION

Графики с помощью MFC. Рябова Анна Сергеевна [email protected]. Пакет Microsoft Foundation Classes. MFC — библиотека на языке C++, разработанная Microsoft и призванная облегчить разработку GUI-приложений для Microsoft Windows путем использования богатого набора библиотечных классов. - PowerPoint PPT Presentation

Citation preview

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

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

Рябова Анна Сергеевна[email protected]

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

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

Пакет Microsoft Foundation Classes

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

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

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

В простейшем случае программа, написанная с помощью MFC,

содержит два класса, порождаемые от классов иерархии библиотеки: класс, предназначенный для создания

приложения, и класс, предназначенный для создания окна.

class CTestGraphApp : public CWinApp{…};

class CTestGraphDlg : public CDialog{};

Page 5: Графики с помощью  MFC
Page 6: Графики с помощью  MFC

Область для рисования Поместить на диалог элемент Static Text Через окно свойств задать ему уникальный ID

IDC_GRAPH или MYGRAPH или G100500 Связать с элементом переменную: Сложный способ

Объявить переменную типа CStatic в классе диалогового окна CStatic m_DrawArea;

Связать переменную и элемент DDX_Control(pDX, IDC_GRAPH, m_DrawArea); в методе DoDataExchange

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

Область для рисования Связать с элементом

переменную:

Простой способ Правой кнопкой мыши на элементе Выбрать Add Variable Настроить категорию Control, тип

CStatic, имя m_DrawArea Нажать OK

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

Рисование по кнопке

Добавить кнопку на диалоговое окно

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

кнопке мыши

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

Device context CClientDC – класс, который позволяет выводить графику

в рабочей области окна. Рисование происходит на так называемом контексте

устройства (Device context). Идея следующая: рисуем на некотором абстрактном DC. Если DC связать с окном на экране, то рисование будет в происходить в окне; если связать его с принтером – то на принтере; если с файлом – то, соответственно, в файл.

Если рисование происходит внутри функции OnDraw, то в качестве параметра функции передается указатель на уже созданный приложением DC, поэтому его можно просто использовать, не заботясь о создании и удалении.

Если рисование происходит в какой-то другой функции (в ответ на какое-нибудь событие, например, при нажатии кнопки), то этот контекст нужно получить. Это делается так: CClientDC dc(this);

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

Рисуем график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;

//Рисуем …}

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

//Рисуем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);

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

Результат

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

Задание 4 Создать приложение, в котором будет

изображен график заранее заданной функции с параметрами

Сделать параметры доступными для редактирования

Перерисовывать график при изменении параметров (можно по кнопке)

по желанию: Масштабирование системы координат Опция для отрисовки нескольких

графиков в одной области

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

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