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

СП - ASM / Лабораторная работа №4 Графика в Windows

.doc
Скачиваний:
17
Добавлен:
03.03.2016
Размер:
378.37 Кб
Скачать

Лабораторная работа №10

ОСНОВЫ РАСТРОВОЙ И ВЕКТОРНОЙ ГРАФИКИ GDI Win32

Цель работы: изучить возможности GDI и освоить основные способы создания растровых и векторных изображений с использованием функций GDI Win32.

Методические рекомендации

При подготовке к лабораторной работе самостоятельно на основе материалов лекций, рекомендованной литературы, справочной системы Win32 API, MSDN и Internet изучить принципы формирования графических изображений средствами GDI Win32. При этом изучить назначение и параметры таких структур данных, объектов GDI, сообщений и функций Win32 API:

  1. структуры данных: COLORREF, POINT, POINTS, RECT, PAINTSTRUCT, BITMAP, LOGPEN, LOGBRUSH, LOGFONT;

  2. для создания и освобождения графического контекста: BeginPaint(), EndPaint(), GetDC(), ReleaseDC(), GetWindowDC(), ReleaseDC(), CreateDC(), ReleaseDC(), CreateCompatibleDC() и др.;

  3. для получения характеристик графического устройства GetDeviceCaps(),GetSystemMetrics() и др.;

  4. для выбора объекта рисования SelectObject(),DeleteObject();

  5. для создания растровых изображений: GetPixel(), SetPixel(), RGB(), GetRValue(), GetGValue(), GetBValue(), FloodFill(), ExtFloodFill(), LoadImage(), CreateBitmap(), CreateBitmapIndirect(), CreateCompatibleBitmap(), BitBlt(), StretchBlt();

  6. для создания векторных изображений: объекты GDI Pen, Brush, Font и соответствующие им функции CreatePen(), CreatePenIndirect(), CreateBrushIndirect(), CreateHatchBrush(), CreatePatternBrush(), CreateSolidBrush(), CreateFont(), CreateFontIndirect(),

- для формирования линий изображения MoveToEx(), AngleArc(), Arc(), ArcTo(), GetArcDirection(), LineTo(), PolyBezier(), PolyDraw(), Polyline(), PolylineTo(), PolyPolyline(), SetArcDirection();

- для формирования областей изображения Chord(), Ellipse(), FillRect(), FrameRect(), Pie(), Polygon(), PolyPolygon(), Rectangle(), RoundRect() и т.д.

- для формирования текстовых подписей TextOut(), ExtTextOut(),SetTextColor() и т.д.

  1. для обеспечения актуальной перерисовки изображений: функции InvalidateRect(), ValidateRect(), сообщения WM_PAINT, WM_ERASEBKGND, WM_NCPAINT;

  2. для обмена данными между процессами с использованием каналов (pipes): CreatePipe().

Ход работы

На основе программ, созданных при выполнении лабораторных работ №№5-7:

  1. В главное меню программы ЛР№7 добавить пункт «Изображение» а в него подпункты «Сведения о графическом устройстве», «Растровое», «Векторное».

  2. При выборе пункта «Сведения о графическом устройстве» в окне сообщений (MessageBox) выдать заданные индивидуальным вариантом (табл. 8.1) сведения о требуемых настройках графического устройства.

  3. В пункт «Растровое» добавить подпункты «Загрузить из файла», «Расчет»1, «Поворот»2. При выборе пункта «Загрузить из файла» вызывать стандартный диалог открытия файлов с режимом открытия файлов только с расширением *.bmp. После закрытия диалога изобразить содержимое выбранного графического файла в исходном размере и в размере заданном вариантом (табл. 8.1).

При выборе пункта «Расчет» определить на изображении количество пикселей заданного цвета.

При выборе пункта «Поворот» повернуть исходное изображение на заданный угол.

  1. В пункт «Векторное» добавить подпункты «График», «Диаграмма».

При выборе пункта «График» вывести в главное окно график 5 периодов заданной функции (табл. 8.1) в системе координат с подписями осей. Подписи вертикальной оси должны быть повернуты на 900 против часовой стрелки (пример: ). Цвет линии графика и шрифт подписи должен задаваться пунктами меню «Опции»-«Настройка»-«Цвет» и «Опции»-«Настройка»-«Шрифт» (см. ЛР №№5-7).

При выборе пункта «Диаграмма» вывести диаграмму заданного вида (табл. 8.1). Количество делений диаграммы и их значения задать случайным образом из заданного диапазона. С использованием всплывающего (PopUp) меню обеспечить выбор параметров линий и заливок диаграммы: цвета, стиля, толщины и т.п.3.

Варианты заданий

№ вар.

Сведения об устройстве

Размер изображения, см

Функция

Вид диаграммы

Количество значений диаграммы

Диапазон значений диаграммы

размер по горизонтали (в пикселях), разрешающая способность (пикс/дюйм)

69

y=sin(x)

5

-100..100

размер по горизонтали (в дюймах), разрешающая способность (пикс/см)

34

y=cos(x)

3

-50..200

размер по горизонтали (в см), разрешающая способность (пикс/см)

56

y=2cos(x)+/2

5

100..200

размер по вертикали (в пикселях), разрешающая способность (пикс/дюйм)

912

y=3sin(2x) + cos(x)

3

10..20

размер по вертикали (в дюймах), разрешающая способность (пикс/см)

1015

y=sin(x) + sin(2x)

5

150..500

размер по вертикали (в см), разрешающая способность (пикс/см)

1010

y=3 - sin(4x) + sin(5x)

7

-100..100

размер по горизонтали (в пикселях), разрешающая способность (пикс/дюйм)

96

y=3cos(3x)+/2

5

-50..200

размер по горизонтали (в дюймах), разрешающая способность (пикс/см)

43

y=sin(x)

3

100..200

размер по горизонтали (в см), разрешающая способность (пикс/см)

66

y=cos(x)

2

10..20

размер по вертикали (в пикселях), разрешающая способность (пикс/дюйм)

129

y=2cos(x)+/2

2

150..500

размер по вертикали (в дюймах), разрешающая способность (пикс/см)

1510

y=3sin(2x) + cos(x)

5

-100..100

размер по вертикали (в см), разрешающая способность (пикс/см)

510

y=sin(x) + sin(2x)

3

-50..200

размер по горизонтали (в пикселях), разрешающая способность (пикс/дюйм)

105

y=3 - sin(4x) + sin(5x)

5

100..200

размер по горизонтали (в дюймах), разрешающая способность (пикс/см)

78

y=3cos(3x)+/2

7

10..20

размер по горизонтали (в см), разрешающая способность (пикс/см)

87

y=1 + sin(4x) + sin(5x)

4

150..500

Контрольные вопросы

  1. Что такое GDI?

  2. Что такое контекст устройства в GDI? Как его получить?

  3. Какие возможны контексты устройства в GDI? Их назначение.

  4. Понятие растрового изображения. Основные функции при создании растрового изображения.

  5. Порядок создания растрового изображения средствами GDI.

  6. Понятие векторного изображения. Основные функции при создании векторного изображения.

  7. Порядок создания векторного изображения средствами GDI.

  8. Понятие шрифта в GDI. Порядок вывода текстовой надписи средствами GDI.

  9. Другие способы вывода графики в Win32.

Литература

  1. Финогенов К.Г. Win32. Основы программирования. - М.: ДИАЛОГ-МИФИ, 2002. - 416 с.

  2. Шилдт Г. Программирование на С и С++ для Windows 95 - К.: BHV, 1996 - 400 с.

  3. Электронный ресурс: www.google.com.

1 Создание и обработка этого пункта меню – при желании студента. Считается, что оценки А и В можно получить только имея желание выполнять задания в полном объеме и более.

2 Создание и обработка этого пункта меню – при большом желании студента (см. также сноску 1).

3 Использование всплывающего меню - по желанию (см. также сноску 1).