русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Получения в WINDOWS программах изображения примитивов. Точки

Для получения графических примитивов используются следующие системные вызовы
Функция рисования точки SetPixel устанавливает цвет точки с заданными координатами:

COLORREF WINAPI SetPixel(
HDC hdc,               // контекст отображения
int nXPos,            // x-координата точки
int nYPos,            // y-координата точки
COLORREF clrref); // цвет точки

Пример: SetPixel(hdc, 0, 0, RGB(0xff, 0, 0));

Для рисования линии в контексте отображения хранятся координаты текущей позиции пера. Для изменения текущей позиции пера в Windows существует системный вызов:

BOOL WINAPI MoveToEx(
HDC hdc,   int x,            int y,                                     // x,y - координата
POINT FAR* lppt);             // указатель на структуру
//POINT, туда переписываются  старые координаты пера

Он перемещает позицию пера в новую точку

Для того чтобы нарисовать прямую линию, приложение должно воспользоваться функцией LineTo :

BOOL WINAPI LineTo(HDC hdc, int xEnd, int yEnd);

Рисование происходит из текущей позиции пера, конечные координаты линии указываются в параметрах xEnd, yEnd. После ее выполнения позиция пера станет равной xEnd, yEnd. Особенностью функции LineTo является то, что она немного не дорисовывает линию - эта функция рисует всю линию, не включая ее конец, т. е. точку (xEnd,yEnd).

Рисование ломаной кривой

BOOL WINAPI Polyline(
HDC hdc, const POINT FAR* lppt,                   // указатель на массив  структур POINT
int cPoints);                             // размер массива

Функции Polyline , предназначенной для рисования ломаных линий, следует передать идентификатор контекста отображения hdc, указатель lppt на массив структур POINT, в котором должны находится координаты начала ломаной линии, координаты точек излома и координаты конца ломаной линии, а также размер этого массива cPoints. Если ломаная линия не замкнута, ее последняя точка не рисуется.

Рисование дуги эллипса функция Arc позволяет нарисовать дугу эллипса или окружности:

BOOL WINAPI Arc(
HDC hdc,   int nxLeft,  int nyTop,            // верхий левый угол
int nxRight, int nyBottom,     // правый нижний угол
int nxStart, int nyStart,                   // начало дуги
int nxEnd,   int nyEnd);          // конец дуги

Параметры (nxLeft,nyTop) и (nxRight,nyBottom) задают координаты, соответственно, верхнего левого и правого нижнего углов воображаемого прямоугольника, в который вписан эллипс.

Начало дуги эллипса определяется пересечением эллипса с воображаемой прямой линией, проведенной из центра эллипса (xC,yC) в точку (xStart,yStart). Конец дуги определяется аналогично - как пересечение эллипса с воображаемой прямой линии, проведенной из центра эллипса в точку (xEnd,yEnd).

Дуга рисуется в направлении против часовой стрелки.

Рисование прямоугольника

BOOL WINAPI Rectangle(
HDC hdc, int nxTL,               // координата x верхнего левого угла
int nyTL,             // координата y верхнего левого угла
int nxBR,             // координата x правого нижнего угла
int nyBR);            // координата y правого нижнего угла

С помощью функции RoundRect можно нарисовать прямоугольник со скругленными углами

BOOL WINAPI RoundRect(
HDC hdc, int nxTL,               // координата x верхнего левого угла
int nyTL,             // координата y верхнего левого угла
int nxBR,             // координата x правого нижнего угла
int nyBR,             // координата y правого нижнего угла
int nxEllipse,       // ширина эллипса
int nyEllipse);      // высота эллипса

Для рисования эллипса вы можете использовать функцию Ellipse

BOOL WINAPI Ellipse(
HDC hdc,  int nxTL,             // координата x верхнего левого угла
int nyTL,             // координата y верхнего левого угла
int nxBR,             // координата x правого нижнего угла
int nyBR);          // координата y правого нижнего угла

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

Сегмент эллипса можно нарисовать при помощи функции Chord 

BOOL WINAPI Chord(
HDC hdc,  int nxLeft,  int nyTop,                      // верхий левый угол
int nxRight, int nyBottom,     // правый нижний угол
int nxStart, int nyStart,                   // начало дуги
int nxEnd,   int nyEnd);          // конец дуги

Для рисования сектора эллипса следует использовать функцию Pie

BOOL WINAPI Pie(
HDC hdc,  int nxLeft,  int nyTop,                      // верхний левый угол
int nxRight, int nyBottom,     // правый нижний угол
int nxStart, int nyStart,          // начало дуги
int nxEnd,   int nyEnd);                   // конец дуги

Рисование многоугольников выполняется функцией Polygon , аналогичной по своим параметрам функции Polyline, с помощью которой рисуются ломаные линии:

BOOL WINAPI Polygon(
HDC hdc, const POINT FAR* lppt,                   // указатель на массив структур POINT
int cPoints);                                     // размер массива

С помощью функции PolyPolygon можно нарисовать одновременно несколько многоугольников:

BOOL WINAPI PolyPolygon(
HDC hdc, const POINT FAR*lppt,                    // указатель на массив структур POINT
int FAR* lpnPolyCounts,       // адрес массива количества точек в многоугольниках
int cPolygons);                                 // количество многоугольников

Параметр cPolygons определяет количество многоугольников, которые нужно нарисовать. Параметр lppt должен содержать указатель на массив структур типа POINT, содержащий координаты вершин всех многоугольников. Через параметр lpnPolyCounts передается указатель на массив целых чисел. Каждое число в этом массиве определяет количество точек в соответствующем многоугольнике. В PolyPolygon не замыкает ломаную линию.

Просмотров: 6127

Вернуться в оглавление:Шпаргалки по компьютеру




Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Полезен материал? Поделись:

Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.