Графикалық координаттар ( Турбо Паскаль )
Мазмұны
Кіріспе 3
1. Графикалық режимге өту 4
1.1. Графикалық режимнің параметрлері 4
1.2. Графикалық координаттар 5
1.3. Графикалық режимдерді басқару процедуралары мен функциялары 6
2. Графикалық қарапайым объектілерді және фигураларды салу 10
2.1. Координаттар, терезелер, беттер 10
2.2. Сызықтар және нүктелер 11
2.3. Көпбұрыштар 13
2.4. Дөғалар, шеңберлер, эллипстер 14
3. Түстерді және толтыру нұсқаларын басқару 15
4. Турбо Паскальдағы графиканың қозғалысы 18
4.1. Суретті көшіру әдісі 18
4.2. Бейнені жадыда сақтау әдісі 19
Қорытынды 22
Қолданылған әдебиеттер 23
Бағдарламалардың листингтері 24
Кіріспе
Бұл курстық жұмыста Турбо Паскальдың графикалық режимінде, графикалық
объектілерді бейнелеу үшін арналған әртүрлі функциялар мен процедуралар
қарастырылған.
Монитордың мәтіндік және графикалық режимдердің жұмыс істеуінің
айырмашылығы болып, визуалды ақпаратты шығаруды басқару табылады. Мәтіндік
режимде, экранда бейнеленетін минималды объекті болып, алфавиттік-сандық
немесе кез келген басқа символдар саналады. Алфавиттік-сандық дисплей
режимінде істеп тұрған экран мониторы әдеттегі жағдайда, көлденеңі бойынша
80 символ және тігінен 25 символ, басқаша айтқанда 2000 визуалды объекті
орналаса алады. Сонымен бірге символдардың түсін басқару мүмкіндігі
шектеулі болады. Әрине, бұл режимде экранға мәтіннен басқа, қандайда бір
графикалық бейнелерді шығаруға болады, бірақ бұл графикалық бейнелердің
сапасы төмен болатыны түсінікті. Сондықтан күрделі бейнелермен жұмыс істеу
үшін дисплейдің мәтіндік режимі сөзсіз жарамайды.
Графикалық режимде, бағдарламаушы басқара алатын минималды объекті
болып, пиксел (ағылшын тілінен Pixel, сурет (picture) және элемент
(element) екі сөзінің тіркесінен құралған ұғым). Пикселдің өлшемі символға
қарағанда едәуір кіші. Оның геометриялық өлшемі монитор рұқсаттылығымен
анықталады. Монитор рұқсаттылығы әдетте rx * ry түрінде беріледі, мұндағы
rx – экран көлденеңі бойынша орналасқан пикселдер саны, ал ry – тігінен
орналсқан пикселдер саны. Тәжірибеде рұқсаттылқтың еркін мәндері емес,
нақты мәндері қолданылады.
Турбо Паскаль құрамына графикалық көмекші бағдарламалардың қуатты
кітапханасы енгізілген. Кітапханада 50-ден астам процедуралар мен
функциялар қамтылған, олар бағдарламаушыға графикалық экранды басқаруға
арналған көптеген құралдарды ұсынады.
Бұл курстық жұмыста Турбо Паскаль бағдарламалау тілінің графикалық
мүмкіндіктері қарастырылған. Соның ішінде, графикалық режимнің парметрлері,
координаттардың параметрлері, режимдерді басқаруға арналған процедуралар.
Графикалық объектілерді салуға арналған процедуралар мен функциялардың
сипаттамалары берілген. Турбо Паскальда түстерді басқаруға да көңіл
бөлінген. Курстық жұмыстың тақырыбына байланысты, Турбо Паскальдағы
графиканың қозғалысы толық қарастырылған, соның ішінде, қозғалысты
ұйымдастырудың нұсқалары, процедуралары мен функцияларының сипатталған.
1. Графикалық режимге өту
Турбо Паскальдың интеграцияланған ортасы жүктелгенде, мәтіндік режимі
қосылады да, графиканы қолдану үшін графикалық режимге өту үшін бірқатар
әрекеттер орындау керек.
Ең алдымен, Турбо Паскальдың Graph модулін қосу керек. Бұл модульде,
графикалық экранмен жұмыс істеуге арналған процедуралар мен функциялар және
графикалық бағдарламаларда қолданылуы мүмкін кейбір кіріктірілген
константалар мен айнымалылар сипатталған. Graph модулінің барлық
мүмкіндіктерін қолдану үшін, бағдарлама басында (тақырыптан кейін) қолдану
операторын орналастыру керек:
uses Graph
Модульдің негізгі болігін, нүкте, түзу сызықтардың кесінділерін,
бүтін шеңберлерді және т.б. сияқты негізгі графикалық элементтерді шығару
процедуралары құрайды. Мұндай элементтер графикалық примитивтер деп
аталады. Басқа процедуралар тобы графикалық режимді басақаруға арналған.
Ары қарай компьютерде орнатылған видеоадаптерді анықтау керек.
Видеоадаптер деп, нақты монитордың жұмысын басқаратын микосхемалар
жиынтығын айтады. Видеоадаптердің түрін анықтауды бағдарламаға жүктеуге
болады.
Компьютердің барлық физикалық құрылғысы сияқты, видеоадаптер, тек
оның жұмысын басқаратын бағдарлама жадтқа жүктелгенде ғана жұмыс істейді.
Мұндай бағдарлама құрылғы драйвері деп аталады. Графикалық драйверлер .BGI
(Borland Graphics Interface – ағылшын тілінен Borland фирмасының графикалық
интерфейсі) кеңейтілуі бар файлдарда орналасады (мысалы, EGAVGA.BGI немесе
IBM8514.BGI). Турбо Паскальда .BGI-файлдарының қажетті жинағы бар,
бағдарламаушыға енді тек бағдарламаның сәйкес орынына бұл файлдарды
қамтыған каталогты белгілеу ғана қалады.
1.1. Графикалық режимнің параметрлері
Нақты адаптердің графикалық мүмкіндіктері экран рұқсаттылығымен
анықталады, басқаша айтқанда пикселдердің жалпы санымен, және де олардың
кез келгені жарқырай алатын түстер (реңтер) санымен. Одан басқа, көптеген
адаптерлер бірнеше графикалық беттермен жұмыс істеу алады. Графикалық бет
деп, экран картасын жасау үшін қолданылатын жедел жадтың облысын айтады,
басқаша айтқанда әр пикселдің жарқырау (түсі) жайлы ақпаратты қамтыған
облысты айтады. Төменде кейбір графикалық адаптерлердің графикалық жұмыс
істеу режимдері қысқаша сипатталған.
▪ EGA адаптері (Enhanced Graphics Adapter – жетілдірілген графикалық
адаптер) CGA адаптерінің графикалық режимін толығымен қайталай алады.
Сонымен қатар, ол төменгі және жоғары рұқсаттылық режимдерін қолдай
алады.
▪ VGA адаптері (Video Graphics Adapter – графикалық видеомассив) CGA
және EGA адаптерлерінің режимін қайталайды және оларды жоғарғы
рұқсаттық режимімен толықтырады (640х480, 16 түс, 1 бет).
▪ Қазрігі кездегі компьютерлерде 800х600 және одан да жоғарыны, және
де 256 және одан да көп түстік реңтерді қаматамсыз ете алатын супер-
VGA (SVGA) деп аталатын адапатерлер қолданылады. Бірақ Graph
кітапханасында оларға сәйкес драйверлер боламйды. SVGA адаптері VGA
мен сәйкес болғандықтан, қазіргі кездегі графикалық адаптерлерді
басқару үшін, EGAVGA.BGI драйверін қолдануға тура келеді жәнеи оның
қарапайым мүмкіндітеріне риза болуға тура келеді.
1.2. Графикалық координаттар
Кез келген бейне қарапайым геометриялық фигуралардан құрылады. Оларға
нүктелер, түзулердің кесіндісі, шеңберлер және т.б. жатады. Геометриядан
белгілі болғандай геометриялық объектінің орналасуы және формасы оның
координаттық нүктелерімен беріледі. Бейненің шығарылуын бағдарламалау үшін,
графикалық объектілердің координаттарын көрсетуді үйрену керек.
Графикалық координаттар нүктенің монитор экранындағы орналасуын
береді. Бағдарламаушы қол жетерлік минималды элемент пиксел болғандықтан,
графикалық координаттар ретінде пикселдердің реттік нөмірін қолданады.
Графикалық координаттардың рұқсат етілген өзгеру аралығы х-координаттары
үшін [0, rx – 1]құрайды, ал у-координаттары үшін [0, ry – 1] құрайды. Санау
басы ретінде экранның жоғарғы сол жақ бұрышы алынады. Значения Х-
координаттарының мәні солдан оңға қарай есептеледі, ал y-координаттары –
жоғарыдан төмен қарай есептеледі. Бұл, графикалық координаттың математикада
қабылданған декарттық координаттардан айырмашылығын көрсетеді.
Бағдарламаны құрастырған жағдайда графика немесе басқа бейне біске
түсінікті декарттық координаттар жүйесінде жобаланады, бұл проблемалар
туғызады. Мұндай графиканың экранда дұрыс бейнеленуі үшін, декарттық және
графикалық координаттар жүйелерінің арасындағы үш айырмашылық ескерілуі
керек:
✓ Графикалық координаттар тек бүтін санды мәндерді қабылдайды.
✓ Графикалық координаттар жоғарыдан да (нөлдік мәнмен), төменнен де
(рұқсаттылық мәнімен) шектелген мәндерді қабылдайды.
✓ Y графикалық координатасы жоғарыдан төменге қарай есептеледі.
1.3. Графикалық режимдерді басқару процедуралары мен функциялары
Графикалық режимге өтуді, Graph модуліндегі InitGraph процедурасы
орындайды. Процедура тақырыбы:
Procedure InitGraph (var Driver,Mode: Integer; Path:
String);
Мұндағы Driver – Integer типті айнымалы, графикалық драйвердің типін
анықтайды; Mode – Integer типті айнымалы, графикалық адаптердің жұмыс істеу
режимін тағайындайды; Path – String типті өрнек, драйвер атын және оны
іздеу маршрутын қамтиды.
Процедураны шақырған уақытта дискілердің біреуінде қажетті графикалық
драйверді қамтыған файл орналасуға тиіс. Процедура бұл драйверді жедел
жадтқа жүктейді де, адаптерді графикалық жұмыс істеу режиміне ауыстырады.
Драйвер типі графикалық адаптер типімен сәйкес болу керек. Драйвер типін
белгілеу үшін, модульде алдын ала константалар анықталған:
const
Detect = 0;
CGA = 1;
EGA = 3;
IBM8514 = 6;
VGA = 9;
Адаптерлердің көбісі әртүрлі режимде жұмыс істей алады. Адаптерге
қажетті жұмыс істеу режимін тағайындау үшін, Mode айнымалысы қолданылады,
процедураға жүгінген уақытта оның мәні ретінде келесі константалар болуы
мүмкін:
const
{Адаптер EGA:}
EGALo = 0; {640x200,16}
EGAHi = 1; {640x350,16}
{Адаптер VGA:}
VGALo = 0; {640x200}
VGAMed = 1; {640x350}
VGAHi = 2: {640x480}
{Адаптер IBM8514}
IBM8514Lo = 0; {640x480,256}
IBM5814Hi = 1; {1024x768,256}
Мысалы, CGA.BGI драйвері C дискісінің TP\BGI каталогында орналасқан,
және де 320х200 рұқсатылығымен және 2 палитрамен жұмыс режимі тағайындалған
болсын. Онда процедураға үндеу келесі түрде болады:
uses Graph;
var
Driver,Mode: Integer;
Begin
Driver := CGA;
Mode := CGAC2;
InitGraph(Driver,Mode, ‘C:\TP\BGI’);
Егер ДК адаптерінің типі белгісіз болса немесе бағдарлама кез келген
адаптермен жұмыс істеуге көзделген болса, онда дрйвер типін автоматты түрде
анықтау талабымен процедураға деген үндеу орындалады:
Driver := Detect;
InitGraph(Driver, Mode, ‘C:\TP\BGI’);
GraphResult функциясы Integer типті мәнді қайтарады, онда графикалық
процедураларға үндеудің соңғы нәтижелері кодталған. Егер қате анықталмаса,
функция мәні 0 болады, кері жағдайда – қандайда бір қатені білдіретін теріс
сан болады. GraphResult функциясына жүгінгеннен кейін қателік белгісі
алынып тасталады, сондықтан оған деген қайта үндеу нөлді қайтарады.
GraphErrorMsg функциясы String типті мәнді қайтарады, онда берілген
қателік коды бойынша сәйкес мәтіндік хабарлама беріледі. Функция тақырыбы:
function GraphErrorMsg(Code: Integer): String;
Мұндағы Code – GraphResult функциясымен қайтарылатын қатенің коды.
CloseGraph процедурасы графикалық режимдегі адаптердің жұмысын
аяқтайды және экранның мәтіндік режимін қайта қалпына келтіреді. Процедура
тақырыбы:
Procedure CloseGraph;
RestoreCRTMode процедурасы мәтіндік режимге қысқа мерзімге қайту үшін
қолданылады. CloseGraph процедурасынан айырмашылығы мынада, графикалық
режимнің орнатылған параметрлері алынып тасталмайды және графикалық
драйверлерді орналастыруға бөлінген жады босатылмайды. Процедура тақырыбы:
procedure RestoreCRTMode;
GetGraphMode функциясы Integer типті мәнді қайтарады, онда графикалық
адаптердің жұмысының тағайындалған режимінің коды қамтылаған. Тақырыбы:
function GetGraphMode: Integer;
SetGraphMode процедурасы адаптердің жаңа жұмыс істеу режимін
тағайындайды. Тақырыбы:
procedure SetGraphMode(Mode: Integer);
DetectGraph процедурасы драйвер типі және жұмыс істеу режимі жайлы
ақпаратты қайтарады. Тақырыбы:
procedure DetectGraph(var Driver,Mode: Integer);
GetDriverName функциясы жүктелген драйвердің атын қамтыған String
типті мәнді қайтарады. Тақырыбы:
function GetDriverName: String;
GetMaxMode функциясы адаптердің жұмыс істеу режимдерінің мүмкін санын
қамтыған Integer типті мәнді қайтарады. Тақырыбы:
function GetMaxMode: Integer
GetModeName функциясы экран рұқсаттылығын және нөмірі бойынша адаптер
жұмысы режимінің атын қамтитын String типті мәнді қайтарады. Тақырыбы:
function GetModeName(ModNumber: Integer): String;
GetModeRange процедурасы берілген графикалық адаптердің жұмыс
режимдерінің мүмкін болатын аралығын қайтарады. Тақырыбы:
procedure GetModeRange(Drv: Integer; var Min, Max: Integer);
PutPixel процедурасы (х,у) графикалық координаттарымен белгілі
нүктені color түсімен бояйды. Тақырыбы:
procedure PutPixel(x, y, color);
Түсті санмен де, алдын ала белгіленген тұрақтымен де көрсетуге болады.
Тұрақтылардың тізімі:
const
Black = 0 қара
Blue = 1 көк
Green = 2 жасыл
Cyan = 3 жарық жасыл
Red = 4 қызыл
Magenta = 5 қызғылт
Brown = 6 қоңыр
LightGray = 7 ашық-сұр
DarkGray = 8 қара-сұр
LightBlue = 9 ашық-көк
LightGreen = 10 ашық-жасыл
LightCyan = 11 ашық-жарық-жасыл
LightRed = 12 ашық-қызыл
LightMagenta = 13 ашық-қызғылт
Yellow = 14 сары
White = 15 ақ
2. Графикалық қарапайым объектілерді және фигураларды салу
2.1. Координаттар, терезелер, беттер
Графикалық процедуралар мен функциялардың көбі, экрандағы ағымдағы
позиция көрсеткішін қолдандаы, оның мәтіндік курсордан айырмашылығы –
көрінбеуі. Графикалық экрандағы жалпы кез келген координаты сияқты,
көрсеткіштің орналасуы жоғарғы солжақ бұрыш бойынша беріледі, оның
координаттары 0,0 болады. Сонымен, экранның көлденең координаттары солдан
оңға қарай артады, ал тігінен – жоғарыдан төменге қарай.
GetMaxX және GetMaxY функциялары көлденеңінен және тігінен сәйкес
ағымдағы жұмыс істеу режимінде экранның максималды координаттарын қамтыған
Word типті мәнді қайтарады. Мысалы:
uses Graph;
var
a,b: Integer;
begin
a := Detect;
InitGraph(a,b,‘ ’);
WriteLn(GetMaxX,GetMaxY:5);
ReadLn;
CloseGraph
end.
SetViewPort процедурасы гарфикалық экранда тік бұрышты терезені
орнатады. Тақырыбы:
рrocedure SetViewPort(X1, Y1, X2, Y2: Integer; ClipOn: Boolean);
Мұнда X1...Y2 – терезе бұрыштарының(Х1,Y1) жоғарғы сол жақ координаттары және
(X2,Y2) оң жақ төменгі координаттары; ClipOn – терезеге симаған бейне
элементтерін алынып тасталуын анықтайтын Boolean типті өрнек.
ClearDevice процедурасы графикалық экранды тазартады. Процедураға
жүгінгеннен кейін көрсеткіш жоғарғы сол жақ бұрышқа орналасады, ал экранның
SetBkColor процедурасымен берілген фон түсімен толтырылады.
GetViewSettings процедурасы ағымдағы графикалық терезенің
координаттарын және алынып тасталу белгісін қайтарады. Тақырыбы:
рrocedure GetViewSettings(var ViewInfo: ViewPortType);
Процедура MoveTo процедурасы ағымдағы көрсеткіштің жаңа орналасуын
орнатады. Процедура тақырыбы:
рrocedure MoveTo(X,Y: Integer);
Процедура MoveRel процедурасы көрсеткіштің жаңа орналасуын
салыстырмалы координаттары бойынша орнатады. Процедура тақырыбы:
рrocedure MoveRel(DX,DY: Integer);
ClearDevice процедурасы графикалық экранды тазартады. Процедураға
жүгінгеннен кейін көрсеткіш экранның жоғарғы сол жақ бұрышына орнатылады,
ал экранның өзі SetBkColor процедурасы тағайындаған фон түсімен
толтырылады. Тақырыбы:
рrocedure ClearDevice;
GetAspectRatio процедурасы экран жақтарының қатынасын бағалауға
мүмкіндік беретін екі санды қайтарады. Тақырыбы:
рrocedure GetAspectRatio(var X,Y: Word);
SetAspectRatio процедурасы графикалық экран жақтары қатысанының
масштабталған коэффициентін орнатады. Тақырыбы:
рrocedure SetAspectRatio(X,Y: Word);
Процедура SetActivePage процедурасы видеожадының белгіленген бетің
белсенді қылады. Тақырыбы:
рrocedure SetActivePage(PageNum: Word);
SetVisualPage процедурасы белгіленген нөмірілі бетті көрінетін
қылады. Тақырыбы:
рrocedure SetVisualPage(PageNum: Word);
2.2. Сызықтар және нүктелер
PutPixel процедурасы берілген координаттар бойынша түсі тағайындалған
нүктені шығарады. Тақырыбы:
рrocedure PutPixel(X, Y: Inteder; Color: Word);
Мұнда X, Y – нүкте координаттары; Color – нүктенің түсі.
GetPixel функциясы берілген координаттарымен пиксел түсін қамтыған
Word типті мәнді қайтарады. Тақырыбы:
Function GetPixel(X, Y: Inteder;): Word;
Мұнда X, Y – пиксел координаттары.
Line процедурасы басының және аяғының координаттары берілген сызық
сызылады. Тақырыбы:
рrocedure Line(X1, Y1, X2, Y2: Integer);
Мұнда X1...Y1 – сызықтың (X1,Y1) басының координаттары және (X2,Y2)аяғының
координаттары. Сызық ағымдағы стильмен және түспен сызылады.
LineTo процедурасы көрсеткіштің ағымдағы орынынан бастап оның
берілген жаңа координаттарына дейін сызықты сызады. Тақырыбы:
рrocedure LineTo(X,Y: Integer);
LineRel процедурасы көрсеткіштің ағымдағы орынынан бастап оның
берілген өсу координаттарына дейін сызықты сызды. Тақырыбы:
рrocedure LineRel(DX,DY: Integer);
SetLineStyle процедурасы сызылатын сызықтарға жаңа стильді
тағайындайды. Тақырыбы:
рrocedure SetLineStyle(Type, Pattern, Thick: Word);
Мұнда Type, Pattern, Thick – сәйкес тип, нұсқа және сызықтың жуандығы.
Сызықтың типі келесі константалардың бірімен берілуі мүмкін:
сonst
SolidLn = 0; (Тұтас сызық)
DottedLn = 1; (Нүктелі сызық)
CenterLn = 2; (Штрих-пунктирлі сызық)
DashedLn = 3; (Пүнктирлі сызық)
UserBitLn = 4; (Сызықтың типін пайдаланушы өзі анықтайды)
Параметр Pattern параметрі, пайдаланушы түрін өзі анықтайтын сызықтар
үшін ғана есептеледі. Сонымен қатар Pattern параметрінің екі байты сызық
нұсқасын анықтайды: берілген сөдіздің белгіленген бірдік бит сызықтағы
жарқырап тұрған пикселге сәйкес, нөлдік бит – жарқырамайтын пкиселге
сәйкес. Сонымен, Pattern параметрі ұзындығы 16 пиксел болатын сызықты
береді. Бұл нұсқа сызықтың ұзындығы бойымен кезеңмен қайталанып отырады.
Thick параметрі төмендегі екі мәннің бірін қабылдай алады:
const
NormWidth = 1; {Бір пикселді жуандық}
ThickWidth = 3; {Үш пикселді жуандық}
Айтып кететіні, процедурамен белгіленген сызық стилі (ағымдағы стиль)
тікбұрыштарды, көпбұрыштарды және басқа фигураларды құрғанда қолданылады.
2.3. Көпбұрыштар
Rectangle процедурасы, бұрыштардың берілген координатарымен
тікбұрышты сызады. Тақырыбы:
рrocedure Rectangle(X1, Y1, X2, Y2: Integer);
Мұнда X1...Y2 – тікбұрыштың жоғарғы сол жақ бұрышының (X1,Y1) координаттары
және төменгі оң жақ бұрышының (X2,Y2) координаттары. Тік бұрыш ағымдағы
түсі және сызықтың ағымдағы стилі қолданылып сызылады.
DrawPoly процедурасы, бұрылыс нүкте координаттарымен берілген еркін
сынық сызығын сызады. Тақырыбы:
рrocedure DrawPoly(N: Word; var Points);
Мұнда N – ең шеткі екі нүктені қоса, сыну нүктелерінің саны; Points – сыну
нүктелерінің координаттарын қамтыған переменная типа PointType типті
айнымалы.
Сыну нүктелердің координаттары Word типті екі мәнмен беріледі:
біріншісі көлденең ... жалғасы
Кіріспе 3
1. Графикалық режимге өту 4
1.1. Графикалық режимнің параметрлері 4
1.2. Графикалық координаттар 5
1.3. Графикалық режимдерді басқару процедуралары мен функциялары 6
2. Графикалық қарапайым объектілерді және фигураларды салу 10
2.1. Координаттар, терезелер, беттер 10
2.2. Сызықтар және нүктелер 11
2.3. Көпбұрыштар 13
2.4. Дөғалар, шеңберлер, эллипстер 14
3. Түстерді және толтыру нұсқаларын басқару 15
4. Турбо Паскальдағы графиканың қозғалысы 18
4.1. Суретті көшіру әдісі 18
4.2. Бейнені жадыда сақтау әдісі 19
Қорытынды 22
Қолданылған әдебиеттер 23
Бағдарламалардың листингтері 24
Кіріспе
Бұл курстық жұмыста Турбо Паскальдың графикалық режимінде, графикалық
объектілерді бейнелеу үшін арналған әртүрлі функциялар мен процедуралар
қарастырылған.
Монитордың мәтіндік және графикалық режимдердің жұмыс істеуінің
айырмашылығы болып, визуалды ақпаратты шығаруды басқару табылады. Мәтіндік
режимде, экранда бейнеленетін минималды объекті болып, алфавиттік-сандық
немесе кез келген басқа символдар саналады. Алфавиттік-сандық дисплей
режимінде істеп тұрған экран мониторы әдеттегі жағдайда, көлденеңі бойынша
80 символ және тігінен 25 символ, басқаша айтқанда 2000 визуалды объекті
орналаса алады. Сонымен бірге символдардың түсін басқару мүмкіндігі
шектеулі болады. Әрине, бұл режимде экранға мәтіннен басқа, қандайда бір
графикалық бейнелерді шығаруға болады, бірақ бұл графикалық бейнелердің
сапасы төмен болатыны түсінікті. Сондықтан күрделі бейнелермен жұмыс істеу
үшін дисплейдің мәтіндік режимі сөзсіз жарамайды.
Графикалық режимде, бағдарламаушы басқара алатын минималды объекті
болып, пиксел (ағылшын тілінен Pixel, сурет (picture) және элемент
(element) екі сөзінің тіркесінен құралған ұғым). Пикселдің өлшемі символға
қарағанда едәуір кіші. Оның геометриялық өлшемі монитор рұқсаттылығымен
анықталады. Монитор рұқсаттылығы әдетте rx * ry түрінде беріледі, мұндағы
rx – экран көлденеңі бойынша орналасқан пикселдер саны, ал ry – тігінен
орналсқан пикселдер саны. Тәжірибеде рұқсаттылқтың еркін мәндері емес,
нақты мәндері қолданылады.
Турбо Паскаль құрамына графикалық көмекші бағдарламалардың қуатты
кітапханасы енгізілген. Кітапханада 50-ден астам процедуралар мен
функциялар қамтылған, олар бағдарламаушыға графикалық экранды басқаруға
арналған көптеген құралдарды ұсынады.
Бұл курстық жұмыста Турбо Паскаль бағдарламалау тілінің графикалық
мүмкіндіктері қарастырылған. Соның ішінде, графикалық режимнің парметрлері,
координаттардың параметрлері, режимдерді басқаруға арналған процедуралар.
Графикалық объектілерді салуға арналған процедуралар мен функциялардың
сипаттамалары берілген. Турбо Паскальда түстерді басқаруға да көңіл
бөлінген. Курстық жұмыстың тақырыбына байланысты, Турбо Паскальдағы
графиканың қозғалысы толық қарастырылған, соның ішінде, қозғалысты
ұйымдастырудың нұсқалары, процедуралары мен функцияларының сипатталған.
1. Графикалық режимге өту
Турбо Паскальдың интеграцияланған ортасы жүктелгенде, мәтіндік режимі
қосылады да, графиканы қолдану үшін графикалық режимге өту үшін бірқатар
әрекеттер орындау керек.
Ең алдымен, Турбо Паскальдың Graph модулін қосу керек. Бұл модульде,
графикалық экранмен жұмыс істеуге арналған процедуралар мен функциялар және
графикалық бағдарламаларда қолданылуы мүмкін кейбір кіріктірілген
константалар мен айнымалылар сипатталған. Graph модулінің барлық
мүмкіндіктерін қолдану үшін, бағдарлама басында (тақырыптан кейін) қолдану
операторын орналастыру керек:
uses Graph
Модульдің негізгі болігін, нүкте, түзу сызықтардың кесінділерін,
бүтін шеңберлерді және т.б. сияқты негізгі графикалық элементтерді шығару
процедуралары құрайды. Мұндай элементтер графикалық примитивтер деп
аталады. Басқа процедуралар тобы графикалық режимді басақаруға арналған.
Ары қарай компьютерде орнатылған видеоадаптерді анықтау керек.
Видеоадаптер деп, нақты монитордың жұмысын басқаратын микосхемалар
жиынтығын айтады. Видеоадаптердің түрін анықтауды бағдарламаға жүктеуге
болады.
Компьютердің барлық физикалық құрылғысы сияқты, видеоадаптер, тек
оның жұмысын басқаратын бағдарлама жадтқа жүктелгенде ғана жұмыс істейді.
Мұндай бағдарлама құрылғы драйвері деп аталады. Графикалық драйверлер .BGI
(Borland Graphics Interface – ағылшын тілінен Borland фирмасының графикалық
интерфейсі) кеңейтілуі бар файлдарда орналасады (мысалы, EGAVGA.BGI немесе
IBM8514.BGI). Турбо Паскальда .BGI-файлдарының қажетті жинағы бар,
бағдарламаушыға енді тек бағдарламаның сәйкес орынына бұл файлдарды
қамтыған каталогты белгілеу ғана қалады.
1.1. Графикалық режимнің параметрлері
Нақты адаптердің графикалық мүмкіндіктері экран рұқсаттылығымен
анықталады, басқаша айтқанда пикселдердің жалпы санымен, және де олардың
кез келгені жарқырай алатын түстер (реңтер) санымен. Одан басқа, көптеген
адаптерлер бірнеше графикалық беттермен жұмыс істеу алады. Графикалық бет
деп, экран картасын жасау үшін қолданылатын жедел жадтың облысын айтады,
басқаша айтқанда әр пикселдің жарқырау (түсі) жайлы ақпаратты қамтыған
облысты айтады. Төменде кейбір графикалық адаптерлердің графикалық жұмыс
істеу режимдері қысқаша сипатталған.
▪ EGA адаптері (Enhanced Graphics Adapter – жетілдірілген графикалық
адаптер) CGA адаптерінің графикалық режимін толығымен қайталай алады.
Сонымен қатар, ол төменгі және жоғары рұқсаттылық режимдерін қолдай
алады.
▪ VGA адаптері (Video Graphics Adapter – графикалық видеомассив) CGA
және EGA адаптерлерінің режимін қайталайды және оларды жоғарғы
рұқсаттық режимімен толықтырады (640х480, 16 түс, 1 бет).
▪ Қазрігі кездегі компьютерлерде 800х600 және одан да жоғарыны, және
де 256 және одан да көп түстік реңтерді қаматамсыз ете алатын супер-
VGA (SVGA) деп аталатын адапатерлер қолданылады. Бірақ Graph
кітапханасында оларға сәйкес драйверлер боламйды. SVGA адаптері VGA
мен сәйкес болғандықтан, қазіргі кездегі графикалық адаптерлерді
басқару үшін, EGAVGA.BGI драйверін қолдануға тура келеді жәнеи оның
қарапайым мүмкіндітеріне риза болуға тура келеді.
1.2. Графикалық координаттар
Кез келген бейне қарапайым геометриялық фигуралардан құрылады. Оларға
нүктелер, түзулердің кесіндісі, шеңберлер және т.б. жатады. Геометриядан
белгілі болғандай геометриялық объектінің орналасуы және формасы оның
координаттық нүктелерімен беріледі. Бейненің шығарылуын бағдарламалау үшін,
графикалық объектілердің координаттарын көрсетуді үйрену керек.
Графикалық координаттар нүктенің монитор экранындағы орналасуын
береді. Бағдарламаушы қол жетерлік минималды элемент пиксел болғандықтан,
графикалық координаттар ретінде пикселдердің реттік нөмірін қолданады.
Графикалық координаттардың рұқсат етілген өзгеру аралығы х-координаттары
үшін [0, rx – 1]құрайды, ал у-координаттары үшін [0, ry – 1] құрайды. Санау
басы ретінде экранның жоғарғы сол жақ бұрышы алынады. Значения Х-
координаттарының мәні солдан оңға қарай есептеледі, ал y-координаттары –
жоғарыдан төмен қарай есептеледі. Бұл, графикалық координаттың математикада
қабылданған декарттық координаттардан айырмашылығын көрсетеді.
Бағдарламаны құрастырған жағдайда графика немесе басқа бейне біске
түсінікті декарттық координаттар жүйесінде жобаланады, бұл проблемалар
туғызады. Мұндай графиканың экранда дұрыс бейнеленуі үшін, декарттық және
графикалық координаттар жүйелерінің арасындағы үш айырмашылық ескерілуі
керек:
✓ Графикалық координаттар тек бүтін санды мәндерді қабылдайды.
✓ Графикалық координаттар жоғарыдан да (нөлдік мәнмен), төменнен де
(рұқсаттылық мәнімен) шектелген мәндерді қабылдайды.
✓ Y графикалық координатасы жоғарыдан төменге қарай есептеледі.
1.3. Графикалық режимдерді басқару процедуралары мен функциялары
Графикалық режимге өтуді, Graph модуліндегі InitGraph процедурасы
орындайды. Процедура тақырыбы:
Procedure InitGraph (var Driver,Mode: Integer; Path:
String);
Мұндағы Driver – Integer типті айнымалы, графикалық драйвердің типін
анықтайды; Mode – Integer типті айнымалы, графикалық адаптердің жұмыс істеу
режимін тағайындайды; Path – String типті өрнек, драйвер атын және оны
іздеу маршрутын қамтиды.
Процедураны шақырған уақытта дискілердің біреуінде қажетті графикалық
драйверді қамтыған файл орналасуға тиіс. Процедура бұл драйверді жедел
жадтқа жүктейді де, адаптерді графикалық жұмыс істеу режиміне ауыстырады.
Драйвер типі графикалық адаптер типімен сәйкес болу керек. Драйвер типін
белгілеу үшін, модульде алдын ала константалар анықталған:
const
Detect = 0;
CGA = 1;
EGA = 3;
IBM8514 = 6;
VGA = 9;
Адаптерлердің көбісі әртүрлі режимде жұмыс істей алады. Адаптерге
қажетті жұмыс істеу режимін тағайындау үшін, Mode айнымалысы қолданылады,
процедураға жүгінген уақытта оның мәні ретінде келесі константалар болуы
мүмкін:
const
{Адаптер EGA:}
EGALo = 0; {640x200,16}
EGAHi = 1; {640x350,16}
{Адаптер VGA:}
VGALo = 0; {640x200}
VGAMed = 1; {640x350}
VGAHi = 2: {640x480}
{Адаптер IBM8514}
IBM8514Lo = 0; {640x480,256}
IBM5814Hi = 1; {1024x768,256}
Мысалы, CGA.BGI драйвері C дискісінің TP\BGI каталогында орналасқан,
және де 320х200 рұқсатылығымен және 2 палитрамен жұмыс режимі тағайындалған
болсын. Онда процедураға үндеу келесі түрде болады:
uses Graph;
var
Driver,Mode: Integer;
Begin
Driver := CGA;
Mode := CGAC2;
InitGraph(Driver,Mode, ‘C:\TP\BGI’);
Егер ДК адаптерінің типі белгісіз болса немесе бағдарлама кез келген
адаптермен жұмыс істеуге көзделген болса, онда дрйвер типін автоматты түрде
анықтау талабымен процедураға деген үндеу орындалады:
Driver := Detect;
InitGraph(Driver, Mode, ‘C:\TP\BGI’);
GraphResult функциясы Integer типті мәнді қайтарады, онда графикалық
процедураларға үндеудің соңғы нәтижелері кодталған. Егер қате анықталмаса,
функция мәні 0 болады, кері жағдайда – қандайда бір қатені білдіретін теріс
сан болады. GraphResult функциясына жүгінгеннен кейін қателік белгісі
алынып тасталады, сондықтан оған деген қайта үндеу нөлді қайтарады.
GraphErrorMsg функциясы String типті мәнді қайтарады, онда берілген
қателік коды бойынша сәйкес мәтіндік хабарлама беріледі. Функция тақырыбы:
function GraphErrorMsg(Code: Integer): String;
Мұндағы Code – GraphResult функциясымен қайтарылатын қатенің коды.
CloseGraph процедурасы графикалық режимдегі адаптердің жұмысын
аяқтайды және экранның мәтіндік режимін қайта қалпына келтіреді. Процедура
тақырыбы:
Procedure CloseGraph;
RestoreCRTMode процедурасы мәтіндік режимге қысқа мерзімге қайту үшін
қолданылады. CloseGraph процедурасынан айырмашылығы мынада, графикалық
режимнің орнатылған параметрлері алынып тасталмайды және графикалық
драйверлерді орналастыруға бөлінген жады босатылмайды. Процедура тақырыбы:
procedure RestoreCRTMode;
GetGraphMode функциясы Integer типті мәнді қайтарады, онда графикалық
адаптердің жұмысының тағайындалған режимінің коды қамтылаған. Тақырыбы:
function GetGraphMode: Integer;
SetGraphMode процедурасы адаптердің жаңа жұмыс істеу режимін
тағайындайды. Тақырыбы:
procedure SetGraphMode(Mode: Integer);
DetectGraph процедурасы драйвер типі және жұмыс істеу режимі жайлы
ақпаратты қайтарады. Тақырыбы:
procedure DetectGraph(var Driver,Mode: Integer);
GetDriverName функциясы жүктелген драйвердің атын қамтыған String
типті мәнді қайтарады. Тақырыбы:
function GetDriverName: String;
GetMaxMode функциясы адаптердің жұмыс істеу режимдерінің мүмкін санын
қамтыған Integer типті мәнді қайтарады. Тақырыбы:
function GetMaxMode: Integer
GetModeName функциясы экран рұқсаттылығын және нөмірі бойынша адаптер
жұмысы режимінің атын қамтитын String типті мәнді қайтарады. Тақырыбы:
function GetModeName(ModNumber: Integer): String;
GetModeRange процедурасы берілген графикалық адаптердің жұмыс
режимдерінің мүмкін болатын аралығын қайтарады. Тақырыбы:
procedure GetModeRange(Drv: Integer; var Min, Max: Integer);
PutPixel процедурасы (х,у) графикалық координаттарымен белгілі
нүктені color түсімен бояйды. Тақырыбы:
procedure PutPixel(x, y, color);
Түсті санмен де, алдын ала белгіленген тұрақтымен де көрсетуге болады.
Тұрақтылардың тізімі:
const
Black = 0 қара
Blue = 1 көк
Green = 2 жасыл
Cyan = 3 жарық жасыл
Red = 4 қызыл
Magenta = 5 қызғылт
Brown = 6 қоңыр
LightGray = 7 ашық-сұр
DarkGray = 8 қара-сұр
LightBlue = 9 ашық-көк
LightGreen = 10 ашық-жасыл
LightCyan = 11 ашық-жарық-жасыл
LightRed = 12 ашық-қызыл
LightMagenta = 13 ашық-қызғылт
Yellow = 14 сары
White = 15 ақ
2. Графикалық қарапайым объектілерді және фигураларды салу
2.1. Координаттар, терезелер, беттер
Графикалық процедуралар мен функциялардың көбі, экрандағы ағымдағы
позиция көрсеткішін қолдандаы, оның мәтіндік курсордан айырмашылығы –
көрінбеуі. Графикалық экрандағы жалпы кез келген координаты сияқты,
көрсеткіштің орналасуы жоғарғы солжақ бұрыш бойынша беріледі, оның
координаттары 0,0 болады. Сонымен, экранның көлденең координаттары солдан
оңға қарай артады, ал тігінен – жоғарыдан төменге қарай.
GetMaxX және GetMaxY функциялары көлденеңінен және тігінен сәйкес
ағымдағы жұмыс істеу режимінде экранның максималды координаттарын қамтыған
Word типті мәнді қайтарады. Мысалы:
uses Graph;
var
a,b: Integer;
begin
a := Detect;
InitGraph(a,b,‘ ’);
WriteLn(GetMaxX,GetMaxY:5);
ReadLn;
CloseGraph
end.
SetViewPort процедурасы гарфикалық экранда тік бұрышты терезені
орнатады. Тақырыбы:
рrocedure SetViewPort(X1, Y1, X2, Y2: Integer; ClipOn: Boolean);
Мұнда X1...Y2 – терезе бұрыштарының(Х1,Y1) жоғарғы сол жақ координаттары және
(X2,Y2) оң жақ төменгі координаттары; ClipOn – терезеге симаған бейне
элементтерін алынып тасталуын анықтайтын Boolean типті өрнек.
ClearDevice процедурасы графикалық экранды тазартады. Процедураға
жүгінгеннен кейін көрсеткіш жоғарғы сол жақ бұрышқа орналасады, ал экранның
SetBkColor процедурасымен берілген фон түсімен толтырылады.
GetViewSettings процедурасы ағымдағы графикалық терезенің
координаттарын және алынып тасталу белгісін қайтарады. Тақырыбы:
рrocedure GetViewSettings(var ViewInfo: ViewPortType);
Процедура MoveTo процедурасы ағымдағы көрсеткіштің жаңа орналасуын
орнатады. Процедура тақырыбы:
рrocedure MoveTo(X,Y: Integer);
Процедура MoveRel процедурасы көрсеткіштің жаңа орналасуын
салыстырмалы координаттары бойынша орнатады. Процедура тақырыбы:
рrocedure MoveRel(DX,DY: Integer);
ClearDevice процедурасы графикалық экранды тазартады. Процедураға
жүгінгеннен кейін көрсеткіш экранның жоғарғы сол жақ бұрышына орнатылады,
ал экранның өзі SetBkColor процедурасы тағайындаған фон түсімен
толтырылады. Тақырыбы:
рrocedure ClearDevice;
GetAspectRatio процедурасы экран жақтарының қатынасын бағалауға
мүмкіндік беретін екі санды қайтарады. Тақырыбы:
рrocedure GetAspectRatio(var X,Y: Word);
SetAspectRatio процедурасы графикалық экран жақтары қатысанының
масштабталған коэффициентін орнатады. Тақырыбы:
рrocedure SetAspectRatio(X,Y: Word);
Процедура SetActivePage процедурасы видеожадының белгіленген бетің
белсенді қылады. Тақырыбы:
рrocedure SetActivePage(PageNum: Word);
SetVisualPage процедурасы белгіленген нөмірілі бетті көрінетін
қылады. Тақырыбы:
рrocedure SetVisualPage(PageNum: Word);
2.2. Сызықтар және нүктелер
PutPixel процедурасы берілген координаттар бойынша түсі тағайындалған
нүктені шығарады. Тақырыбы:
рrocedure PutPixel(X, Y: Inteder; Color: Word);
Мұнда X, Y – нүкте координаттары; Color – нүктенің түсі.
GetPixel функциясы берілген координаттарымен пиксел түсін қамтыған
Word типті мәнді қайтарады. Тақырыбы:
Function GetPixel(X, Y: Inteder;): Word;
Мұнда X, Y – пиксел координаттары.
Line процедурасы басының және аяғының координаттары берілген сызық
сызылады. Тақырыбы:
рrocedure Line(X1, Y1, X2, Y2: Integer);
Мұнда X1...Y1 – сызықтың (X1,Y1) басының координаттары және (X2,Y2)аяғының
координаттары. Сызық ағымдағы стильмен және түспен сызылады.
LineTo процедурасы көрсеткіштің ағымдағы орынынан бастап оның
берілген жаңа координаттарына дейін сызықты сызады. Тақырыбы:
рrocedure LineTo(X,Y: Integer);
LineRel процедурасы көрсеткіштің ағымдағы орынынан бастап оның
берілген өсу координаттарына дейін сызықты сызды. Тақырыбы:
рrocedure LineRel(DX,DY: Integer);
SetLineStyle процедурасы сызылатын сызықтарға жаңа стильді
тағайындайды. Тақырыбы:
рrocedure SetLineStyle(Type, Pattern, Thick: Word);
Мұнда Type, Pattern, Thick – сәйкес тип, нұсқа және сызықтың жуандығы.
Сызықтың типі келесі константалардың бірімен берілуі мүмкін:
сonst
SolidLn = 0; (Тұтас сызық)
DottedLn = 1; (Нүктелі сызық)
CenterLn = 2; (Штрих-пунктирлі сызық)
DashedLn = 3; (Пүнктирлі сызық)
UserBitLn = 4; (Сызықтың типін пайдаланушы өзі анықтайды)
Параметр Pattern параметрі, пайдаланушы түрін өзі анықтайтын сызықтар
үшін ғана есептеледі. Сонымен қатар Pattern параметрінің екі байты сызық
нұсқасын анықтайды: берілген сөдіздің белгіленген бірдік бит сызықтағы
жарқырап тұрған пикселге сәйкес, нөлдік бит – жарқырамайтын пкиселге
сәйкес. Сонымен, Pattern параметрі ұзындығы 16 пиксел болатын сызықты
береді. Бұл нұсқа сызықтың ұзындығы бойымен кезеңмен қайталанып отырады.
Thick параметрі төмендегі екі мәннің бірін қабылдай алады:
const
NormWidth = 1; {Бір пикселді жуандық}
ThickWidth = 3; {Үш пикселді жуандық}
Айтып кететіні, процедурамен белгіленген сызық стилі (ағымдағы стиль)
тікбұрыштарды, көпбұрыштарды және басқа фигураларды құрғанда қолданылады.
2.3. Көпбұрыштар
Rectangle процедурасы, бұрыштардың берілген координатарымен
тікбұрышты сызады. Тақырыбы:
рrocedure Rectangle(X1, Y1, X2, Y2: Integer);
Мұнда X1...Y2 – тікбұрыштың жоғарғы сол жақ бұрышының (X1,Y1) координаттары
және төменгі оң жақ бұрышының (X2,Y2) координаттары. Тік бұрыш ағымдағы
түсі және сызықтың ағымдағы стилі қолданылып сызылады.
DrawPoly процедурасы, бұрылыс нүкте координаттарымен берілген еркін
сынық сызығын сызады. Тақырыбы:
рrocedure DrawPoly(N: Word; var Points);
Мұнда N – ең шеткі екі нүктені қоса, сыну нүктелерінің саны; Points – сыну
нүктелерінің координаттарын қамтыған переменная типа PointType типті
айнымалы.
Сыну нүктелердің координаттары Word типті екі мәнмен беріледі:
біріншісі көлденең ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz