slide1
Download
Skip this Video
Download Presentation
Графики с помощью MFC

Loading in 2 Seconds...

play fullscreen
1 / 14

Графики с помощью MFC - PowerPoint PPT Presentation


  • 471 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Графики с помощью MFC' - kalb


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

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

Рябова Анна Сергеевна

[email protected]

slide2

Пакет Microsoft Foundation Classes

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

Создать проект типа MFC Application

  • Dialog based
  • MFC in a static library
slide4
В простейшем случае программа, написанная с помощью MFC,

содержит два класса, порождаемые от классов иерархии

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

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

class CTestGraphApp : public CWinApp

{

};

class CTestGraphDlg : public CDialog

{

};

slide6
Область для рисования
  • Поместить на диалог элемент StaticText
  • Через окно свойств задать ему уникальный IDIDC_GRAPHили MYGRAPHили G100500
  • Связать с элементом переменную:
  • Сложный способ
    • Объявить переменную типа CStatic в классе диалогового окна CStatic m_DrawArea;
    • Связать переменную и элемент DDX_Control(pDX, IDC_GRAPH, m_DrawArea); в методе DoDataExchange
slide7
Область для рисования
  • Связать с элементом переменную:
  • Простой способ
    • Правой кнопкой мыши на элементе
    • Выбрать Add Variable
    • Настроить категорию Control, тип CStatic, имяm_DrawArea
    • Нажать OK
slide8
Рисование по кнопке
  • Добавить кнопку на диалоговое окно
  • Создать метод, вызывающийся при нажатии на кнопку
    • Двойной щелчок по кнопке
    • Add Event Handler механизмпо правой кнопке мыши
device context
Device context
  • CClientDC – класс, который позволяет выводить графику в рабочей области окна.
  • Рисование происходит на так называемом контексте устройства (Device context). Идея следующая: рисуем на некотором абстрактном DC. Если DC связать с окном на экране, то рисование будет в происходить в окне; если связать его с принтером – то на принтере; если с файлом – то, соответственно, в файл.
  • Если рисование происходит внутри функции OnDraw, то в качестве параметра функции передается указатель на уже созданный приложением DC, поэтому его можно просто использовать, не заботясь о создании и удалении.
  • Если рисование происходит в какой-то другой функции (в ответ на какое-нибудь событие, например, при нажатии кнопки), то этот контекст нужно получить. Это делается так: CClientDC dc(this);
slide10
Рисуем график

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;

//Рисуем …

}

slide11

//Рисуем

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);

slide13
Задание 4
  • Создать приложение, в котором будет изображен график заранее заданной функции с параметрами
  • Сделать параметры доступными для редактирования
  • Перерисовывать график при изменении параметров (можно по кнопке)

по желанию:

  • Масштабирование системы координат
  • Опция для отрисовки нескольких графиков в одной области
ad