Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Изучение графических средств С




 

Цель работы: приобрести практические навыки в использовании графических функций языка С.

 

Теоретические сведения

Графические функции предназначены для управления видеорежимами работы дисплея, выводом графической информации на экран.

 

Графические функции

void far detectgraph(int far *graphdriver, int far *graphmode); – определение доступного видео-драйвера.

void far initgraph(int far * graphdriver, int far *graphmode, char far *pathtodriver); - установка видеорежима.

vo id far setgraphmode(int mode); - установка видеорежима.

void far restorecrtmode(void); - временный переход из графического видеорежима в текстовый.

void far closegraph(void); - закрытие графической системы.

void far setvisualpage(int page); - установка активной видеостраницы.

void far setactivepage(void); -вывод на активную видеостраницу.

int far getmaxx(void); - определение максимального значения координаты х.

int far getmaxy(void); - определение максимального значения координаты у.

void far setviewport(int left, int top, int right, int botton, int clip); - установка нового графического окна.

void far getviewsettings(struct viewporttype far *viewport); - получение параметров текущего окна.

void far moveto(int x, int y); void far moverel(int dx, int dy); - перемещение текущей графической позиции в координаты x, y или на величину dx, dy.

void far setlinestyle(int linestyle, unsigned upattern, int thickness); - установка типа линии.

i nt far getx(void); -получить текущую графическую позицию (х).

int far gety(void); - получить текущую графическую позицию (у).

void far clearviewport(void); - очистка текущего графического окна.

void far cleardevice(void); - очистить активную видеостраницу.

int far getmaxcolor(void); -определить максимальное количество цветов.

void far setpalette(int colornum, int color); - установка палитры.

void far setbkcolor(int color); -установка цвета фона.

Доступ к пикселям

unsigned far getpixel(int x, int y); - получить текущие параметры пикселя.

void far putpixel(int x, int y, int color); - вывести пиксель с параметрами.

Графические примитивы

void far bar(int left, int top, int right, int botton);

void far bar3d(int left, int top, int right, int botton, int depth, int topflag);

void far fillpoly(int numpoints, int far *polypoints);

void far fillelipse(int x, int y, int xradius, int yradius);

void far pielipse(int x, int y, stangle, int endangle, int radius);

void far sector(int x, int y, int stangle, int endangle, int xradius, int yradius);

void far line(int x1, int y1, int x2, int y2);

void far linerel(int dx, int dy);

void far lineto(int x, int y);

void far rectangle(int left, int top, int right, int botton);

void far drawpoly(int numpoints, far *polypoints);

void far circle(int x, int y, int radiuces);

void far arc(int x, int y, int stangle, int endangle, int radius);

void far ellipse(int x, int y, int stangle, int endangle, int xradius, int yradius);

Пример

/* Разработал Гармаш В.Н.

Объявить массивы для вывода текста в графическом режиме,

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

Выполнить расчеты и построить заданную геометрическую фигуру.

Вывести тексты на экран с применением необходимых функций. */

#include <graphics.h>

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <math.h>

#include <DOS.H>

#define ANGLES 15

#define PIXEL_COUNT 1000

#define DELAY_TIME 100 /* in milliseconds */

char *str[]={"А","л","ь","ф","а"," ","Ц","е","н","т","а","в","р","а","."};

char st[]="_";

void demo(int x,int y,int size,int color);

void demo1(void);

void main()

{// Инициализация графического режима работы

int graphdriver=DETECT,graphmode,errorcode;

initgraph(&graphdriver,&graphmode,"");

errorcode = graphresult();

if (errorcode!= grOk)

{ printf("Graphics error: %s\n", grapherrormsg(errorcode));

printf("Press any key to halt:");

getch();

exit(1);

}

//Рисование рамки по контуру экрана

setcolor(9); //Установка цвета

setlinestyle(0,0,3); //Установка типа линии

line(0,0,getmaxx(),0); // Рисование линии

line(0,0,0,getmaxy());

line(getmaxx(),0,getmaxx(),getmaxy());

line(0,getmaxy(),getmaxx(),getmaxy());

setcolor(10); // Вывод текста "ЗАДАНИЕ 19"

settextstyle(GOTHIC_FONT,HORIZ_DIR,4);

outtextxy(260,10,"ЗАДАНИЕ 19");

demo(320,250,125,11); // Функция вывода рисунка

demo1(); // Функция вывода текста "Альфа Центавра"

getch();

closegraph(); // Окончание графического режима работы

clrscr();

}

 

void demo(int x,int y,int size,int color)

{ setcolor(color);

setlinestyle(0,0,1);

int xx[ANGLES],yy[ANGLES],i,j;

for (i=0;i<=ANGLES-1;i++)

{ xx[i]=x+(int)(cos(i*2*M_PI/ANGLES)*size);

yy[i]=y-(int)(sin(i*2*M_PI/ANGLES)*size);

}

for (i=0;i<=ANGLES-1;i++)

{ for (j=0;j<=ANGLES-1;j++)

if (i!=j)

{ line(xx[i],yy[i],xx[j],yy[j]);

}

}

}

 

void demo1(void)

{ int f1 = installuserfont("rtri.CHR"); //Установка шрифта

unsigned int sz;

void far *ptr;

sz=imagesize(10,10,50,50);

ptr=malloc(sz);

getimage(10,10,50,50,ptr);

int size = 2,tt,ff,i;

while(!kbhit())

{ tt=0;

settextstyle(DEFAULT_FONT, HORIZ_DIR, size);

for(i=0; i<3; i++)

{ setcolor(3); outtextxy(260,60,st); delay(90);

setcolor(0); outtextxy(260,60,st); delay(90);

}

setcolor(3); ff=260;

for(i=0; i<15; i++)

{ setcolor(3);

settextstyle(f1, HORIZ_DIR, 4);

outtextxy(260+tt, 50, str[i]);

tt+=textwidth(str[i]);

sound(30); delay(20); nosound();

settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);

outtextxy(260+tt+4, 60, st); delay(40);

setcolor(0);

outtextxy(260+tt+4, 60, st); delay(10);

}

settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);

for(i=1;i<4;i++)

{ setcolor(3); outtextxy(260+tt+4, 60, st); delay(90);

setcolor(0); outtextxy(260+tt+4, 60, st); delay(90);

}

setcolor(3);

ff=tt+260; tt=0;

for(i=14;i>=0;i--)

{ settextstyle(f1, HORIZ_DIR, 4);

tt+=textwidth(str[i]);

sound(30); delay(20); nosound();

putimage(ff-tt, 50, ptr, COPY_PUT);

settextstyle(DEFAULT_FONT, HORIZ_DIR, 2);

setcolor(3); outtextxy(ff-tt-4, 60, st); delay(40);

setcolor(0); outtextxy(ff-tt-4, 60, st); delay(10);

}

}

}

Ход работы

1 Изучить теоретические сведения.

2 В соответствии с индивидуальным заданием разработать алгоритм решения задачи и оформление интерфейса программы.

3 Подготовить и разметить на экране эскиз чертежа детали в масштабе 1:1.

4 Составить программу с использованием графических функций языка С для вывода на экран подготовленной графической информации. Размеры, указанные на чертеже, ввести с клавиатуры.

5 Набрать программу на компьютере и устранить ошибки.

6 Получить результат.

7 Оформить отчет.

8 Подготовиться к защите лабораторной работы, изучив контрольные вопросы по теме.

 

Индивидуальное задание к лабораторной работе №19.

Варианты индивидуальных заданий находятся в таблице 19.1.

Таблица 19.1 - индивидуальные задания

Вариант Номер рисунка Вариант Номер рисунка
  а   г
  б   д
  в   е
  г   ж
  д   з
  е   и
  ж   к
  з   л
  и   м
  к   а
  л   б
  м   в
  а   г
  б   д
  в   е

 

Рисунок 19.1 - индивидуальные задания

Контрольные вопросы для подготовки и самостоятельной работы

1 Какая функция применяется для установки видеорежима, инициализации графического режима работы?

2 Что означают параметры функций в приведенном примере?

3 Как закрыть графический режим работы?

4 Можно ли получить и установить координаты курсора на экране? В чём измеряются эти координаты?

5 Какие функции позволяют устанавливать цвета для выводимой информации, цвет фона, осуществлять различные виды заливки изображения?

6 Какие графические примитивы можно изобразить с помощью библиотечных функций? Какие параметры необходимы для построения этих примитивов?

 

Рекомендована література

1. Абрамов и др. Задачи по программированию. М.: Наука, 1988 - 224 с.

2. Подбельский В.В., Фомин С.С.. Программирование на языке Си: Учеб. Пособие. – 2-е изд. доп.- М.: Финансы и статистика, 2003.- 600с.

3. Ален И., Голуб. Си и Си++. Правила программирования. /Под ред.В. Костенко - М.:БИНОМ - 272с.

4. Ашарина И.В. Основы программирования на языках Си и С++: Учебный курс.- М.: Горячая линия – Телеком, 2002. – 207с.

5. Берри Р., Микин Б. Языки Си. Введение для программистов. - 1988 - 198 с.

6. Бочков С.О., Субботин Д.М. Язык программирования Си для персонального компьютера. /Под ред. А.И.Садчикова - Диалог. Радио и связь, 1990 - 384 с.

7. Касаткин А.И., Вольвачёв А.М. Профессиональное программирование на языке Си. От Turbo C к Borland C++. - Минск. Высш. школа, 1992.

8. Кетков Ю. Практикапрограммирвоания:Бейсик, Си, Паскаль: Самоучитель/Ю.Кетков, А.Кетков- СПб.: БХВ – Петербург,2002 – 480с.

9. Керниган Б., Ритчи Д. Язык программирования Си. - 2- е изд. - М.: Финансы и статистика, 1992 - 272 с.

10. Котлинская Г.П., Галиновский О.И. Программирование на языке Си. - Минск: Высшая школа, 1991.

11. Павловская Т.А. С/С++. Программирование на языке высокого уровня: Учебник. – СПб.: Питер, 2001 – 464с.

12. Павловская Т.А. С/С++. Программирование на языке высокого уровня: Учебник для вузов. – СПб.: Питер, 2003 – 461с.

13. Павловская Т.А. С/С++. Программирование на языке высокого уровня: Учебник. – СПб.: Питер, 2007 – 461с.

14. Павловская Т.А. С/С++. Программирование на языке высокого уровня: Учебник. – СПб.: Питер, 2004 – 461с.

15. Павловская Т.А. С/С++. Программирование на языке высокого уровня /СПб.: Питер, 2002 – 464 с.

16. Паппас К. Программирование на С и С++/К.Паппас, УМюррей – К:ВНУ, 2000 – 320с.

17. Петцольд Ч. Программирование в тональности С. – М.:Рус.редакция,2004 – 512с.

18. Проценко В.С., Чаленко И.П., Ставровський А.Б. Техніка програмування мовою Сі. - К: Либедь, 1993 - 224 с.

19. Романовская Л.М., Русс Т.В., Святковский С.Г. Программирование в среде Си. Для ПЭВМ ЕС. М.: Ф и С, 1992 - 352 с.

20. Хенкок Л, Кригер М. Введение в программирование на языке Си. Финансы и статистика, 1988

21. Шилдт Г. Полный справочник по С/ Под ред.Я.К.Шмидского – 4- е изд. – М.: Изд.дом Вильямс, 2005 – 704с.

22. Шмидский Я.К. Программирование на языке С/С++. Самоучитель. – М: Вильямс, 2003 – 352с.

23. Шпак З.Я. Програмування мовою С: Навчальний посібник. – Львів: Оріяна – Нова, 2006 – 432с.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...