заполнения внутренних точек областей, имеет тип HBRUSH и называется кистью.
Функции рисования. Функция
BOOL LineTo(HDC hdc, int x,int y);
соединяет текущую позицию CP прямолинейным отрезком с точкой (х,у). Цвет и шаблон отрезка определяется текущим пером.
Функция
MoveToEx(HDC hdc, int x,int y,LPPOINT lpCoord);
переносит текущую позицию CP в точку (х,у) и сохраняет старую позицию СР в структуру POINT, адрес которой определен указателем lpCoord. Здесь LPPOINT обозначает тип POINT*. Если lpCoord=NULL, то старая позиция не сохраняется.
Функция
COLORREF SetPixel (HDC hdc, int x, int y, COLORREF color);
записывает точку цветом color в позицию (х,у). Здесь COLORREF обозначает 32-битовый тип данных, содержащий цвет пиксела. Если точка (х,у) не попадает в окно, то эта функция возвращает –1. Тип COLORREF содержит в младшем байте интенсивность синего, во втором – зеленого, в третьем – красного цвета. Его старший байт должен быть равен 0.
Цвет можно получить с помощью макроса
COLORREF RGB (int red, int green, int blue);
Например, после вызова
SetPixel (hdc, 100 , 200 , RGB(255 , 0 , 0));
на экране появится красная точка, имеющая координаты x=100, y=200.
Функция
BOOL Ellipse (HDC hdc,int xleft, int ytop, int xright, int ybottom);
выводит заполненный эллипс, вписанный в прямоугольник со сторонами, параллельными осям координат. Левый верхний угол этого прямоугольника имеет координаты (xleft,ytop), а правый нижний - (xright,ybotoom). Внутренние точки эллипса закрашиваются в соответствии с шаблоном и цветом заполнения, определёнными кистью.
Функция
BOOL Pie (HDC hdc,int xleft, int ytop, int xright, int ybottom,int startx, int starty, int endx, int endy);
Функция
BOOL Arc (HDC hdc, HDC hdc,int xleft, int ytop, int xright, int ybottom,int startx, int starty, int endx, int endy);
выводит дугу, являющуюся частью границы эллипса , вписанного в прямоугольник со сторонами параллельными осям координат. Параметры аналогичны параметрам функции Pie(). Если начало и конец дуги совпадают, то выводится вся граница эллипса. Например, окружность с центром (xC,yC) и радиусом rвыводится с помощью вызова функции
Arc(hdc, xC-r,yC-r,xC+r,yC+r,xC+r,yC,xC+r,yC);
Функция
BOOL Polygon (HDC hdc, POINT *pnts, int n);
выводит заполненный n-угольник, вершинами которого являются точки pnts[0],pnts[1],…,pnts[n-1]. Последняя точка соединяется с первой. Многоугольник закрашивается текущей кистью. Граница рисуется цветом и шаблоном пера.
Функция
BOOL TextOut (HDC hdc, int x,int y, LPSTR lpstr, int nlength);
выводит на экран текстовую строку, определенную указателем lpstr, начиная с точки, координаты которой задаются параметрами (x,y). Количество символов для вывода равно nlength. Функция, как и все другие графические функции типа BOOL, возвращает ненулевое значение при успешном завершении, и нулевое – при неуспешном.
1.7. ПЕРВАЯ ПРОГРАММА : ДЕРЕВЬЯ АММЕРАЛА
Дополним каркас приложения, приведенный в пп. 1.5 функцией (подпрограммой), выводящей на экран компьютера дерево. Идея алгоритма построения дерева принадлежит Аммералу [1]. Сначала выводится прямоугольник, соответствующий стволу дерева. Затем на верхней стороне прямоугольника строится прямоугольный треугольник, для которого эта сторона служит гипотенузой. Затем на каждом из катетов полученного прямоугольного треугольника будут построены прямоугольники, и этот процесс будет рекурсивно применен к каждому из этих двух прямоугольников.
При расчету будем использовать обычную систему координат, а при выводе точку (х,у) будем записывать в позицию (x,maxY-y) , где maxY – высота окна, т.к. начало отсчета находится в левом верхнем углу окна, а ось у направлена вниз.
Эта функция строит прямоугольник и выводит его боковые стороны. Затем она надстраивает над ним прямоугольный треугольник (рис. 7) и вызывает себя рекурсивно, передавая в качестве параметров координаты вершин катетов этого треугольника.
Расчет показывает , что
где .
Дерево будем выводить при нажатии любой клавиши. Для этого функция изображения дерева будет вызываться при обработке сообщения о нажатии
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.