С для профессиональных программистов



         

Простейшая тестовая программа


Приведенные здесь программа иллюстрируют применение и возможности ранее описанных функций поддержки графики.

/* Программа, иллюстрирующая работу графических

функций */

#include "dos.h"

#include "stdio.h"

void mode(),line(),box(),fill_box();

void mempoint(),palette(),xhairs();

void circle(),plot_circle(),fill_circle();

double asp_ratio;

main()

mode(4);

palette(0);

line(0,0,100,100,1);

box(50,50,80,90,2);

fill_box(100,0,120,40,3);

circle(100,160,30,2);

fill_circle(150,250,20,1);

getchar();

mode(2);

/* установка палитры */

void palette(pnum)

int pnum;

union REGS r;

r.h.bh=1; /* код 4 режима графики */

r.h.bl=pnum; /* номер палитры */

r.h.ah=11; /* устанавливаетса для вызова палитры */

int86(0x10,&r,&r);

/* Установка видеорежима */

void mode(mode_code)

int mode_code;

union REGS r;

r.h.al = mode_code;

r.h.ah = 0;

int86(0x10,&r,&r);

/*  Вычерчивание прямоугольника  */

void box(startx,starty,endx,endy,color_code)

int startx,starty,endx,endy,color_code;

line(startx,starty,endx,starty,color_code);

line(startx,starty,startx,endy,color_code);

line(startx,endy,endx,endy,color_code);

line(endx,starty,endx,endy,color_code);

/* Вычерчивание линии заданного цвета с использованием

алгоритма Брезенхама */

void line(startx,starty,endx,endy,color)

int startx,starty,endx,endy,color;

register int t,distance;

int xerr=0,yerr=0,delta_x,delta_y;

int incx,incy;

/* Вычисление расстояния в обоих направлениях                                                     */

delta_x=endx-startx;

delta_y=endy-starty;

/* Определение направления шага,

шаг вычисляется либо по вертикальной, либо по горизонтальной

линии                                                     */

if (delta_x>0) incx=1;

else  if (delta_x==0) incx=0;

else  incx= -1;

if (delta_y>0) incy=1;

else  if (delta_y==0) incy=0;

else  incy= -1;

/* Определение какое расстояние больше */




Содержание  Назад  Вперед