Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Графические операции в MFC






Графические операции в MFC представляют собой методы класса CDC и его производных классов. Рассмотрим примеры построения графических примитивов.

Вывод строки:

void CMainWnd:: OnPaint()

{

CPaintDC dc(this);

dc.TextOut(200, 200, " TextOut Samples");

//Координаты x, y начала вывода текста и сам текст

}

Вывод точки:

void CMainWnd:: OnPaint()

{

CPaintDC dc(this);

dc.SetPixel(500, 200, RGB(255, 0, 0));

//Координаты x, y точки и ее цвет, соответствующий

//палитре RGB

}

Рисование дуги окружности:

void CMainWnd:: OnPaint()

{

CPaintDC dc(this);

dc.Arc(200, 200, 100, 100, 400, 400, 10, 10);

//dc.Arc(x1, y1, x2, y2, x3, y3, x4, y4), где

//x1, y1, x2, y2 – координа ты прямоугольника,

//в который вписывается эллипс,

//x3, y3 – начальная точка,

//x4, y4 – конечная точка прямой линии,

//отсекающей от эллипса дугу,

//дуга чертится против часовой стрелки

//от точки x3, y3 до точки x4, y4.

}

Замкнутая дуга:

void CMainWnd:: OnPaint()

{

CPaintDC dc(this);

dc.Chord(250, 250, 100, 100, 400, 400, 10, 10);

//Рисует сегмент эллипса, параметры

//аналогичны параметрам функции Arc()

}

Эллипс:

void CMainWnd:: OnPaint()

{

CPaintDC dc(this);

dc.Ellipse(450, 450, 50, 150); //Параметры функции //Ellipse() – координаты точек x1, y1 и

//x2, y2, задающих прямоугольник,

//в который вписывается эллипс

}

Прямая линия:

void CMainWnd:: OnPaint()

{

CPaintDC dc(this);

dc.MoveTo(200, 200); //Установка курсора в

//заданную точку окна с

//координатами x1, y1

dc.LineTo(100, 100); //Рисование линии

//от текущей позиции курсора

//до заданной точки с координатами x2, y2

}

Ломаная линия:

void CMainWnd:: OnPaint()

{

CPaintDC dc(this);

int n=5; //Количество точек ломаной линии

CPoint pt[5]; //Массив координат точек ломаной

pt[0].x=30;

pt[0].y=70;

pt[1].x=480;

pt[1].y=90;

pt[2].x=120;

pt[2].y=40;

pt[3].x=190;

pt[3].y=60;

pt[4].x=250;

pt[4].y=200;

dc.Polyline(pt, n); //Рисование ломаной линии

//Если координаты первой и последней

//точки совпадают, ломаная получается

//замкнутой, иначе – разомкнутой

}

Многоугольник:

void CMainWnd:: OnPaint()

{

CPaintDC dc(this);

int n=5; //Количество вершин многоугольника

CPoint pt[5]; //Массив координат вершин

//многоугольника

pt[0].x=30;

pt[0].y=70;

pt[1].x=480;

pt[1].y=90;

pt[2].x=120;

pt[2].y=40;

pt[3].x=190;

pt[3].y=60;

pt[4].x=250;

pt[4].y=200;

dc.Polygon(pt, n); //Рисование многоугольника

// – все точки массива соединяются прямыми

//линиями, включая последнюю и первую точки

}

Рассмотрим программу, которая осуществляет вывод квадрата в середину диалоговой панели (рис. 21.7). В зависимости от выбранных радиокнопок изменяются размеры квадрата. Перерисовка изображения происходит сразу после выбора новой радиокнопки.

Рис. 21.7. Вывод квадрата в диалоговое окно

Для создания программы необходимо выполнить следующие шаги.

1. Создайте в среде Visual C++ приложение, использующее библиотеку MFC – MFC AppWizard(exe); вариант приложения – Dialog Based, название – Graphmfc1.

2. Отредактируйте диалоговую панель:

· в свойствах диалоговой панели установите язык диалоговой панели – русский;

· удалите кнопку Cancel;

· измените текст и положение статической строки: в свойство Caption элемента введите текст «Рисование квадрата»;

· добавитьте элемент управления Group и отредактируйте его подпись: в свойство Caption элемента введите текст «Коэффициент»;

· внутри элемента Group разместите три радиокнопки – элементы Radio Button. Настройте свойства 1-й радиокнопки: установите флажок Group;

· внутри элемента Group разместите три статических строки и введите в них подписи к радиокнопкам, обозначающие коэффициент, определяющий размеры квадрта, – «х1», «х2», «х3».

3. Добавьте в программу переменную m_Size, связанную с радиокнопками (категория value, тип int).

4. Инициализируйте радиокнопки – выберите при открытии диалоговой панели первую радиокнопку; для этого в функции OnInitDialog() диалоговой панели после строки //TODO Add extra initialization here добавьте код:

//TODO: Add extra initialization here

m_Size=0;






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.