Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
39
Добавлен:
16.02.2016
Размер:
157.7 Кб
Скачать

Лабораторная работа №4 Разработка однооконного Windows-приложения для вывода графической информации.

1.Задание на выполнение лабораторной работы

  1. В интегрированной среде разработки Microsoft Visual C++ 6.0 создать приложение, которое выводит в окно график функции согласно своему варианту. Кроме графика функции на экран должны быть выведены оси координат с подписями и разметкой по ним и сетка.

Варианты приведены в таблице 1.

Таблица 1

№ варианта

Формула, определяющая функцию.

Y = F(X)

Диапазон значений X,

шаг изменения

1

Y = X

X = {0 до 9}, шаг 1

2

Y = 0.5 * X

X = {0 до 9}, шаг 1

3

Y = 2 * X +1

X = {0 до 9}, шаг 1

4

Y = X^2

X = {0 до 9}, шаг 1

5

Y = X^2 + 10

X = {0 до 9}, шаг 1

6

Y = X^2 + 5*X + 3

X = {0 до 9}, шаг 1

7

Y = X^3

X = {0 до 9}, шаг 1

8

Y = X^3 + 45

X = {0 до 9}, шаг 1

9

Y=SIN(X)

X = {0 до 180 град}, шаг 10 град

10

Y=COS(X)

X = {0 до 180 град}, шаг 10 град

11

Y=TAN(X)

X = {0 до 80 град}, шаг 10 град

12

Y=X^0.5

X = {0 до 9}, шаг 1

13

Y=e^X

X = {0 до 9}, шаг 1

14

Y=SIN(X) + 0.1

X = {0 до 180 град}, шаг 10 град

15

Y=COS(X) – 0.1

X = {0 до 180 град}, шаг 10 град

16

Y=TAN(X) –2

X = {0 до 80 град}, шаг 10 град

17

Y=X^0.5

X = {0 до 9}, шаг 1

18

Y=e^X + 1000

X = {0 до 9}, шаг 1

19

Y=SIN(X) + COS(X)

X = {0 до 180 град}, шаг 10 град

20

Y = 2^X

X = {0 до 9}, шаг 1

2.Порядок выполнения работы

1. В среде Visual C++ с помощью мастера приложений MFCAppWizard создать шаблон проекта;

2. Открыть окно редактора и ввести текст программы;

4. Отладить программу, последовательно выполняя: компиляцию и исправление синтаксических ошибок, компоновку исполняемой программы и исправление логических ошибок и, наконец, выполнение исполняемой программы;

5. Доказать правильность работы программы.

3. Методические указания

3.1 Создание шаблона проекта с помощью мастера AppWizard.

Создадим шаблон нашего проекта, выполняя следующие действия:

1.В главном меню VC++ выберем пункт File/New и в открывшемся диалоговом окне New(новый) выберем вкладку Project;

2. На вкладке Project(проект) окна New выберем строку MFCAppWizard(exe). В проекте создается приложение, поддерживающее графический интерфейс пользователя, реализованный на основе классов MFC. Результатом выполнения проекта будет исполняемый файл с расширением .EXE. Далее в окне редактирования Project name(имя проекта) окна(панели) New введем с клавиатуры имя нашего проекта, например, LR4. В остальных полях панели New оставим установки по умолчанию. В окне редактирования Location(расположение) можно указать свой маршрут для проекта.

Нажмем кнопку ОК и перейдем в окно MFCAppWizard-Step 1.

3. В появившемся диалоговом окне MFCAppWizard-Step 1 включим радиокнопку Single Document. Уберите галочку с флаговой кнопки Docement/View architecture support. В выпадающем списке What language would you like your resource in выберите Английский[США](APPWZENU.DLL).

Нажмем кнопку Next(следующий).

4. В появившемся диалоговом окне MFCAppWizard-Step 2 of 6 оставим по умолчанию все опции и нажмем кнопку Next.

5. В появившемся диалоговом окне MFCAppWizard-Step 3 of 6 уберите галочку с флаговой кнопки ActiveX Contros остальные оставим по умолчанию и нажмем кнопку Next.

6. В появившемся диалоговом окне MFCAppWizard-Step 4 of 6 уберите все галочки со всех флаговых кнопок остальное оставьте по умолчанию и нажмем кнопку Next.

7. В появившемся диалоговом окне MFCAppWizard-Step 5 of 6 оставьте все по умолчанию и нажмите кнопку Next.

8. В появившемся диалоговом окне MFCAppWizard-Step 6 of 6 оставьте все по умолчанию и нажмите кнопку Finish и в последующем диалоге кнопку Ok.

Cоздание проекта нашего приложения закончено

9. Запустите на выполнение проект. Для этого нажмите на панели инструментов кнопку с восклицательным знаком. VC++ откомпилирует все файлы проекта, скомпонует их в исполняемый файл с расширением EXE и запустит его.

3.2 Вывод графической и текстовой информации в окно.

  1. В левой части среды VC++ расположено окно с несколькими вкладками. Перейдите на вкладку ClassView к дереву классов вашего проекта и найдите класс CСhildView. В нем есть функция OnPaint. В тело этой функции вы будете вставлять операторы, которые осуществляют рисование. Весь графический вывод осуществляется в контекст устройства. В функции он уже присутсвует :

CPaintDC dc(this); // device context for painting

  1. Остальные объекты и функции, которые вам понадобяться :

1.1 Объект CPen - карандаш

пример объявления :

CPen pen(S_SOLID,2,RGB(0,0,0));

Где в первый аргумент задает стиль линии, второй – толщину, третий – цвет(каждое число – составляющая красного, зеленого и синего цветов). После создания CPen его нужно выбрать в контекст устройства

Пример выбора в контекст устройства.

CPen *pPen = dc.SelectObject(&pen);

После использования карандаша, нужно вернуть в контекст устройства

предидущий карандаш:

dc.SelectObject(pPen);

    1. Для отрисовки линии используется пара функций :

dc.MoveTo( X1, Y1); dc.LineTo( X2, Y2 );

рисует линию из точки (x1, y1) в точку (x2, y2).

Обратите внимание, что начало координат у окна находится в левом верхнем углу.

    1. Для вывода текста используется функция

dc.TextOut( X1,Y1,”Просто текст” );

Выводит строку “Просто текст” начиная с точки (X1, Y1)

3. Пример простого графического вывода :

struct { int m_nStyle; LPTSTR m_csStyle; } lnStyle[] = { // структура определяющаая тип линии

PS_SOLID, _T("PS_SOLID"),

PS_DASH, _T("PS_DASH"),

PS_DOT, _T("PS_DOT"),

PS_DASHDOT, _T("PS_DASHDOT"),

PS_DASHDOTDOT, _T("PS_DASHDOTDOT"),

PS_NULL, _T("PS_NULL"),

PS_INSIDEFRAME, _T("PS_INSIDEFRAME")

};

//

// чтобы при любом размере шрифта

// текст не налезал друг на друга

// получим характеристики текущего

// шрифта

//

TEXTMETRIC tm;

dc.GetTextMetrics(&tm); // получаем параметры шрифта, используемого для вывода текста

// устанавливаем режим "прозрачного" вывода

dc.SetBkMode(TRANSPARENT);

for (int i = 0; i < sizeof(lnStyle) / sizeof(lnStyle[0]); i++)

{

// будем рисовать разными по стилю карандашами,

// но имеющими единичную толщину и черный цвет

CPen pen(lnStyle[i].m_nStyle, 1, RGB(0, 0, 0));

CPen *pPen = dc.SelectObject(&pen);

// учитываем высоту символов и расстояние между строками

int nY = 10+i*(tm.tmHeight+tm.tmExternalLeading);

dc.TextOut(10, nY, lnStyle[i].m_csStyle); // Вывод текста

dc.MoveTo(200, nY+(tm.tmHeight+tm.tmExternalLeading) / 2); // перемещаем курсор

dc.LineTo(400, nY+(tm.tmHeight+tm.tmExternalLeading) / 2); // рисуем линию

dc.SelectObject(pPen);

}

4. Для хранения значений функции по абсциссе и ординате вам понадобятся 2 вещественных массива. Для формирования значений понадобятся функции из заголовочного файла <math.h>. Обратите внимание, что для тригонометрических функций аргумент задается в радианах.

Соседние файлы в папке МетодУказЛабРабот