Графикалық функциялар
Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1 С++ программалау тіліндегі графикалық режим ... ... ... ... ... ... ... ... ... ... ... . 5
1.1 Графикалық режимде сурет салу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5
1.2 Графикалық режимде суреттер салатын құралдар немесе канвалар ... ... .. 7
1.3 C++ Builder программалау ортасының графикалық мүмкіншіліктері ... ... 8
2 С++ Builder программалау ортасында графикалық режим функцияларымен жұмыс ... 17
2.1 Паравоздың суретін салатын программаны құру ... ... ... ... ... ... ... ... ... ... 17
2.2 Тіктөртбұрыш пен эллипсті түрлі тәсілдермен бейнелеу және қылқаламдарды қолдану...18
2.3 Кеменің суретін салатын программа құру ... ... ... ... ... ... ... ... ... ... ... ... ... . 19
2.4 С++ программалау тілінде мәтіндерді шығару ... ... ... ... ... ... ... ... ... ... ... . 21
2.5 Графикалық режимде паралелопипедтің сурет салу ... ... ... ... ... ... ... ... ... 22
2.6 API функциясының көмегімен Borland C++ Builder ортасында графиканы программалау..23
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 25
Қолданылған әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 27
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1 С++ программалау тіліндегі графикалық режим ... ... ... ... ... ... ... ... ... ... ... . 5
1.1 Графикалық режимде сурет салу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5
1.2 Графикалық режимде суреттер салатын құралдар немесе канвалар ... ... .. 7
1.3 C++ Builder программалау ортасының графикалық мүмкіншіліктері ... ... 8
2 С++ Builder программалау ортасында графикалық режим функцияларымен жұмыс ... 17
2.1 Паравоздың суретін салатын программаны құру ... ... ... ... ... ... ... ... ... ... 17
2.2 Тіктөртбұрыш пен эллипсті түрлі тәсілдермен бейнелеу және қылқаламдарды қолдану...18
2.3 Кеменің суретін салатын программа құру ... ... ... ... ... ... ... ... ... ... ... ... ... . 19
2.4 С++ программалау тілінде мәтіндерді шығару ... ... ... ... ... ... ... ... ... ... ... . 21
2.5 Графикалық режимде паралелопипедтің сурет салу ... ... ... ... ... ... ... ... ... 22
2.6 API функциясының көмегімен Borland C++ Builder ортасында графиканы программалау..23
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 25
Қолданылған әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 27
С++ программалау тілі заманауи обьектіге бағытталған программалауға бағыт беретін кілт болып табылады. Бұл тіл басқа программалау тілдері мен көптеген деректерді өңдеуге арналған заманауи құрылғылар тәуелді болып келетін концептуалды фрагментті қамтамасыз етеді.
1980 жылы Бьярна Страуструптың қабілеттілігінің арқасында ANSI – дің өкілі – С++ программалау тілі пайда болды. С++ тілі С тіліне қарағанда программистке дәстүрлі құрылымдық және объектілік бағытталған программаларды жасауға мүмкіндік береді. С++ тілі көмегімен профессионалды жоғары деңгейдегі программаларды жазуға болады. Қазіргі таңда C# және Java тілдері С++ программалау тілінің негізінде құрылған, олар бірдей базалық синтаксис пен өңдеу принциптерін қамтиды.
С++ тілі – тасымалданатын тіл. Бұл ортада жазылған қолданбалы программалар бір компьютерден екінші компьютерге оңай тасмалданады. Сонымен қатар тіл - оңай компиляцияланатын тіл болып табылады. Ол жүйелік программаларда пайдаланылады.
Программаның объектілік құрылымы ең алғаш күрделі жүйелерді имитациялық модульдеудің simula (ХХ ғасыр 60-шы жылдар) қолданған болатын. Объектілік тұрғыда программалаудың Delphi, C++ Builder Visual C++ құралдары кеңінен таралған.
Бұл курстық жұмыста С++ программалау тілінің графикалық режимінде графикалық объектілердің бейнеленуі үшін әр түрлі функциялар мен процедуралар қарастырылады.
Курстық жұмыстың тақырыбы – «Графикалық режим жұмыс функциялары». Курстық жұмыстың негізгі мақсаты: С++ программалау тілінде графикалық режимнің жұмыс функцияларының мүмкіндіктерін зерттеу. Мақсатқа жету үшін мынадай міндеттер орындалуы тиіс:
С++ программалау тілінде графикалық режимді зерттеу;
Графиканың толық мүмкіндіктерін тереңірек зерттеу;
Графикалық жүйені басқару функцияларын зерттеу;
С++ программалау тілінде обьектілер мен фигураларды салу;
Графиктің режимде тәжірибелік жұмыс ретінде есептер шығару.
Графикалық режимде минималды объект, бағдарламашы басқара алатын қорытынды болып «Пиксель» мен «Элемент» табылады. Пиксель бейнелерге қарағанда аз мөлшерде болады. Оның геометриялық өлшемесі монитордың шешімі арқылы анықталады. Монитордың шешімі әдетте былай беріледі: rx*ry, мұндағы rx-экрандағы пиксельдердің, ал ry-тігінен орналасқан пиксельдердің саны. Машықта өнімдік емес, кейбір шешімдердің белгілі мағыналары қолданылады.
Графикалық режимде жұмыс жасау барысында мына қағидаларды есте сақтау қажет:
Графикалық режимде экран нүктелердің жиынтығын білдіреді, олардың әрқайсысы 16 түстің біріне боялуы мүмкін;
1980 жылы Бьярна Страуструптың қабілеттілігінің арқасында ANSI – дің өкілі – С++ программалау тілі пайда болды. С++ тілі С тіліне қарағанда программистке дәстүрлі құрылымдық және объектілік бағытталған программаларды жасауға мүмкіндік береді. С++ тілі көмегімен профессионалды жоғары деңгейдегі программаларды жазуға болады. Қазіргі таңда C# және Java тілдері С++ программалау тілінің негізінде құрылған, олар бірдей базалық синтаксис пен өңдеу принциптерін қамтиды.
С++ тілі – тасымалданатын тіл. Бұл ортада жазылған қолданбалы программалар бір компьютерден екінші компьютерге оңай тасмалданады. Сонымен қатар тіл - оңай компиляцияланатын тіл болып табылады. Ол жүйелік программаларда пайдаланылады.
Программаның объектілік құрылымы ең алғаш күрделі жүйелерді имитациялық модульдеудің simula (ХХ ғасыр 60-шы жылдар) қолданған болатын. Объектілік тұрғыда программалаудың Delphi, C++ Builder Visual C++ құралдары кеңінен таралған.
Бұл курстық жұмыста С++ программалау тілінің графикалық режимінде графикалық объектілердің бейнеленуі үшін әр түрлі функциялар мен процедуралар қарастырылады.
Курстық жұмыстың тақырыбы – «Графикалық режим жұмыс функциялары». Курстық жұмыстың негізгі мақсаты: С++ программалау тілінде графикалық режимнің жұмыс функцияларының мүмкіндіктерін зерттеу. Мақсатқа жету үшін мынадай міндеттер орындалуы тиіс:
С++ программалау тілінде графикалық режимді зерттеу;
Графиканың толық мүмкіндіктерін тереңірек зерттеу;
Графикалық жүйені басқару функцияларын зерттеу;
С++ программалау тілінде обьектілер мен фигураларды салу;
Графиктің режимде тәжірибелік жұмыс ретінде есептер шығару.
Графикалық режимде минималды объект, бағдарламашы басқара алатын қорытынды болып «Пиксель» мен «Элемент» табылады. Пиксель бейнелерге қарағанда аз мөлшерде болады. Оның геометриялық өлшемесі монитордың шешімі арқылы анықталады. Монитордың шешімі әдетте былай беріледі: rx*ry, мұндағы rx-экрандағы пиксельдердің, ал ry-тігінен орналасқан пиксельдердің саны. Машықта өнімдік емес, кейбір шешімдердің белгілі мағыналары қолданылады.
Графикалық режимде жұмыс жасау барысында мына қағидаларды есте сақтау қажет:
Графикалық режимде экран нүктелердің жиынтығын білдіреді, олардың әрқайсысы 16 түстің біріне боялуы мүмкін;
Қолданылған әдебиеттер тізімі
1. Герберт Шилдт, С++ Базовый курс, 3-е издание,- Спб.: Вильямс, 2010.
2. Е.Кондратюк, С++. Трюки и эффекты,- СПб.: Питер, 2006.
3. Семакин И. Г., Шестаков А. П., Основы программирования, - СПб.: «Мастерство», 2002. - 432 с.
4. Подбельский В.В., Язык С++; учеб.пособие. – 5-е изд., - СПб.: М, «Финансы и статистика», 2003.- 560с.
5. Александров В.И. Создание оконных приложений в среде программирования C++ Builder 6,- СПб.: Аст-пресс, 2006.
6. Павловская Т.А., Щупак Ю.А. - С и С++. Структурное программирование, - СПб.: «Питер», 2003. – 240с.
7. Культин Н. - C++ Builder в задачах и примерах, - СПб.: БХВ – Петербург, 2005. – 288с.
8. Архангельский А. Я., Программирование в С++ Builder 6, - СПб.: Бином, 2003.
9. Архангельский А. Я., С++ Builder 6 справочное пособие (книги 1,2), - СПб.: Бином, 2002.
10. Франка П. С++: учебный курс. - СПб.: Питер, 2006. - 522с.
11. Н.С. Заурбеков, Б.Ж. Жұмажанова. Алгоритмдеу және программалау тілдері Алматы «Экономика» 2008.
12. Давыдов В.Г. Технологии программирования C++ БХВ-Петербург. 2005.
13. Иванова Г. С. Технология программирования: Учебник для вузов.- М.: Изд-во МГТУ им. Н. Э. Баумана, 2003- 320 с.
14. Свердлов С. З. Языки программирования и методы трансляции: Учебное пособие. – СПб.: Питер,2007-638 с.
15. Холингворт, Джаррод, Сворт и др. Borland C++Builder 6. Руководство разработчика.: Пер с англ. – М. : ИД «Вильямс», 2004- 976 с.
16. Тяпичев Г. А. Быстрое программирование на С++.– .: СОЛОН-Пресс, 2004-384 с.
17. Н.С. Заурбеков, Б.Ж. Жұмажанова. Алгоритмдеу және программалау тілдері Алматы «Экономика» 2008.
1. Герберт Шилдт, С++ Базовый курс, 3-е издание,- Спб.: Вильямс, 2010.
2. Е.Кондратюк, С++. Трюки и эффекты,- СПб.: Питер, 2006.
3. Семакин И. Г., Шестаков А. П., Основы программирования, - СПб.: «Мастерство», 2002. - 432 с.
4. Подбельский В.В., Язык С++; учеб.пособие. – 5-е изд., - СПб.: М, «Финансы и статистика», 2003.- 560с.
5. Александров В.И. Создание оконных приложений в среде программирования C++ Builder 6,- СПб.: Аст-пресс, 2006.
6. Павловская Т.А., Щупак Ю.А. - С и С++. Структурное программирование, - СПб.: «Питер», 2003. – 240с.
7. Культин Н. - C++ Builder в задачах и примерах, - СПб.: БХВ – Петербург, 2005. – 288с.
8. Архангельский А. Я., Программирование в С++ Builder 6, - СПб.: Бином, 2003.
9. Архангельский А. Я., С++ Builder 6 справочное пособие (книги 1,2), - СПб.: Бином, 2002.
10. Франка П. С++: учебный курс. - СПб.: Питер, 2006. - 522с.
11. Н.С. Заурбеков, Б.Ж. Жұмажанова. Алгоритмдеу және программалау тілдері Алматы «Экономика» 2008.
12. Давыдов В.Г. Технологии программирования C++ БХВ-Петербург. 2005.
13. Иванова Г. С. Технология программирования: Учебник для вузов.- М.: Изд-во МГТУ им. Н. Э. Баумана, 2003- 320 с.
14. Свердлов С. З. Языки программирования и методы трансляции: Учебное пособие. – СПб.: Питер,2007-638 с.
15. Холингворт, Джаррод, Сворт и др. Borland C++Builder 6. Руководство разработчика.: Пер с англ. – М. : ИД «Вильямс», 2004- 976 с.
16. Тяпичев Г. А. Быстрое программирование на С++.– .: СОЛОН-Пресс, 2004-384 с.
17. Н.С. Заурбеков, Б.Ж. Жұмажанова. Алгоритмдеу және программалау тілдері Алматы «Экономика» 2008.
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 25 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 25 бет
Таңдаулыға:
ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫҢ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
"Есептеу техникасы және
ақпараттық жүйе" кафедрасы
С++ тілінде программалау пәні бойынша
КУРСТЫҚ ЖОБА
Тақырыбы: Графикалық режим жұмыс функциялары
Орындаған: Ақпараттық жүйелер
мамандығының ___топ студенті__________
Тексерген: ____________________
Орал, 2013ж.
Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
3
1 С++ программалау тіліндегі графикалық режим ... ... ... ... ... ... ... .. ... ... ... ...
5
1.1 Графикалық режимде сурет салу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
5
1.2 Графикалық режимде суреттер салатын құралдар немесе канвалар ... ... ..
7
1.3 C++ Builder программалау ортасының графикалық мүмкіншіліктері ... ...
8
2 С++ Builder программалау ортасында графикалық режим функцияларымен жұмыс ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
17
2.1 Паравоздың суретін салатын программаны құру ... ... ... ... ... ... ... ... ... ... .
17
2.2 Тіктөртбұрыш пен эллипсті түрлі тәсілдермен бейнелеу және қылқаламдарды қолдану ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
18
2.3 Кеменің суретін салатын программа құру ... ... ... ... ... ... ... ... ... ... ... ... ... ..
19
2.4 С++ программалау тілінде мәтіндерді шығару ... ... ... ... ... ... ... ... ... ... ... ..
21
2.5 Графикалық режимде паралелопипедтің сурет салу ... ... ... ... ... ... ... ... ... .
22
2.6 API функциясының көмегімен Borland C++ Builder ортасында графиканы программалау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
23
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
25
Қолданылған әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
27
Кіріспе
С++ программалау тілі заманауи обьектіге бағытталған программалауға бағыт беретін кілт болып табылады. Бұл тіл басқа программалау тілдері мен көптеген деректерді өңдеуге арналған заманауи құрылғылар тәуелді болып келетін концептуалды фрагментті қамтамасыз етеді.
1980 жылы Бьярна Страуструптың қабілеттілігінің арқасында ANSI - дің өкілі - С++ программалау тілі пайда болды. С++ тілі С тіліне қарағанда программистке дәстүрлі құрылымдық және объектілік бағытталған программаларды жасауға мүмкіндік береді. С++ тілі көмегімен профессионалды жоғары деңгейдегі программаларды жазуға болады. Қазіргі таңда C# және Java тілдері С++ программалау тілінің негізінде құрылған, олар бірдей базалық синтаксис пен өңдеу принциптерін қамтиды.
С++ тілі - тасымалданатын тіл. Бұл ортада жазылған қолданбалы программалар бір компьютерден екінші компьютерге оңай тасмалданады. Сонымен қатар тіл - оңай компиляцияланатын тіл болып табылады. Ол жүйелік программаларда пайдаланылады.
Программаның объектілік құрылымы ең алғаш күрделі жүйелерді имитациялық модульдеудің simula (ХХ ғасыр 60-шы жылдар) қолданған болатын. Объектілік тұрғыда программалаудың Delphi, C++ Builder Visual C++ құралдары кеңінен таралған.
Бұл курстық жұмыста С++ программалау тілінің графикалық режимінде графикалық объектілердің бейнеленуі үшін әр түрлі функциялар мен процедуралар қарастырылады.
Курстық жұмыстың тақырыбы - Графикалық режим жұмыс функциялары. Курстық жұмыстың негізгі мақсаты: С++ программалау тілінде графикалық режимнің жұмыс функцияларының мүмкіндіктерін зерттеу. Мақсатқа жету үшін мынадай міндеттер орындалуы тиіс:
+ С++ программалау тілінде графикалық режимді зерттеу;
+ Графиканың толық мүмкіндіктерін тереңірек зерттеу;
+ Графикалық жүйені басқару функцияларын зерттеу;
+ С++ программалау тілінде обьектілер мен фигураларды салу;
+ Графиктің режимде тәжірибелік жұмыс ретінде есептер шығару.
Графикалық режимде минималды объект, бағдарламашы басқара алатын қорытынды болып Пиксель мен Элемент табылады. Пиксель бейнелерге қарағанда аз мөлшерде болады. Оның геометриялық өлшемесі монитордың шешімі арқылы анықталады. Монитордың шешімі әдетте былай беріледі: rx*ry, мұндағы rx-экрандағы пиксельдердің, ал ry-тігінен орналасқан пиксельдердің саны. Машықта өнімдік емес, кейбір шешімдердің белгілі мағыналары қолданылады.
Графикалық режимде жұмыс жасау барысында мына қағидаларды есте сақтау қажет:
# Графикалық режимде экран нүктелердің жиынтығын білдіреді, олардың әрқайсысы 16 түстің біріне боялуы мүмкін;
# Нүктенің координатасы солдан оңға қарай және жоғарыдан төменге қарай артады. Сол жақ жоғарғы нүктесі (0,0) координатасына ие болса, оң жақ төменгі нүктенің координатасы (639,479) тең;
# Программа экранға графикалық фигураларды (сызық, шеңбер, тіктөртбұрыш) шығару үшін графикалық режимді іске қосу керек.
1 С++ программалау тіліндегі графикалық режим
1.1 Графикалық режимде сурет салу
Деректерді экранға шығарудың түрлі тәсілдері бар. Қазір қарастырылып отырған GDI (Graphics Device Interface) интерфейсі ағылшын тілінен аударғанда құрылғының графикалық интерфейсі деп аталады. Windows-та құрылғылардың жанамасы (DC) деп аталатын тағы бір термин бар. Ол сурет салуда канваны белгілеу үшін қолданылады. Жанама құрылғымен API функциясының деңгейінде әрекеттесу келесіге негізделген. Барлық графикалық обьектілер Handle қасиетін қолданады, ол обьектінің дескрипторын құрайды. Содан жанама құрылғының дескрипторын алу керек. Кейін қажетті обьектілерді алу керек: қалам, қылқалам және қаріптер. Содан соң ғана суретті салуға болады, ал салып болғаннан кейін ұсталған ресурстарды босату керек.
HDC DC;
DC=GetDC(Handle);
HBRUSH Brush=CreateSolidBrush(RGB(0,0,255) );
SelectObject(DC,Brush);
Ellipse(DC,20,20,150,250);
ReleaseDC(Handle,DC);
Графикалық суреттердің екі түрі бар: растрлық (bitmap) және векторлық. Растрлық графика экрандағы әрбір нүкте туралы ақпарат (нүктенің түсі) береді. Векторлық графика суретті сызықтар мен фигуралар жиыны ретінде сипаттайды.
Графикалық режимге көшудің кең таралған тәсілі режимді орнататын, рұқсатты да беретін әрі EGAVGA.BGI-ға жол сілтейтін initgraph функциясын қолдану болып табылады. Оның синтаксисі:
initgraph(*int far grdriver, *int far grmode, char *path);
Бірінші аргумент видеоадаптердің типін білдіреді. Ол сандық мәнді қабылдайды. Аргумент grdriver:
Кесте 1.
Видеоадаптердің типтері
Видеоадаптердің типі
Аргументтің мәні:
Автотану
DETECT немесе 0
CGA
1
MCGA
2
EGA
3
EGA64
4
EGA-Mono
5
Тіркелгені
6
Mono Hercules
7
ATT400
8
VGA
9
PC3270
10
Екінші аргумент - графикалық режим, шешімділік беру болып табылады.
Кесте 2.
Графикалық режимнің аргументтік мәндері
Режим
Аргументтің мәні
VGA 640x200 16 түс (төменгі шешімділік)
0
VGA 640x350 16 түс (орташа шешімділік)
1
VGA 650х480 16 түс (жоғары шешімділік)
2
EGA 640x200 16 түс (төменгі шешімділік)
0
EGA 640x350 16 түс (орташа шешімділік)
1
Үшінші аргумент - EGAVGA.BGI драйверінінің файлына жол сілтеу. Егер бұл файл c:\tc\bgi\ папкасында орындалса, оның мәні мынадай болады: c:\\tc\\bgi\\. Си тілінде барлық жолдар екі слэшпен жазылады. Егер библиеотекалық файлға жол сілтенетін болса, тырнақшаға алынады:
#include "c:\tc\bin\my\biblioteka.h"
Сонымен компьютерді графикалық режимге ауыстыру үшін барлығы дайын.
#include conio.h
#includegraphics .h
void main()
{
clrscr();
cprintf("Мәтіндік режим.");
getch();
Графикалық режимге көшу!
int a=9, b=2;
initgraph(&a, &b, "c:\\tc\\bgi\\");
outtext("Бұл графикалық режим!");
getch();
closegraph();
cprintf("\n Мәтіндік режим!");
getch();
}
Графикалық режимнің қалпы келесі түрде жазылады:
графикалық программаның қалпы
#include graphics.h
#include conio.h
#define PATHTODRIVER "c: WborlandcWbgiW"
void main (void)
{
int gdriver = DETECT; драйвер
int gmode; режим
int errorcode; қателік коды
initgraph(&gdriver, &gmode, PATHTODRIVER);
errorcode = graphresult{);
if (errorcode != grOk) графикалық режимді
инициялдау қателігі
{
printf("Қателік: %d\n", errorcode);
puts("Программаны аяқтау үшін Enter басыңыз")
getch();
return;
келесі программаның нұсқауы
closegraph(); графикалық режимнің аяқталуы
}
1.2 Графикалық режимде суреттер салатын құралдар немесе канвалар
Кенеп түсінігі. TCanvas классын енгізу графикалық қосымшалардың жазылуын жеңілдетеді. Ол сурет салынатын канвалардың орнын белгідеу үшін қолданылады: терезе облысында, жұмыс үстелінде, принтерге шығаруды және тағы басқалары.
TCanvas классы келесі қасиеттерге ие:
# Brush - геометриялық фигураларды бояу кезінде қалып пен құю түсін анықтайды;
# Font - мәтінді шығаруға арналған қаріптер;
# Handle - API функциясын шақыру үшін қолданылатын канваның дескрипторы;
# Pen - сызықтың стилі мен түсін анықтайды;
# CopyMode - суреттің орындалу тәсілін анықтайды (инверсті, қалыпты және т.б.);
# ClipRect - канвадағы тіктөртбұрышты облысты салу.
Контурларды салу үшін Pen айнымалысы қолданылады, облыстарды бояу үшін Brush айнымалысы қолданылады. TСanvas түрлі фигураларды салуға арналған көптеген тәсілдерден тұрады, мәтін шығарады, шығарылатын суреттің масштабын анықтайды және тағы басқалары. Канваны қолдана отырып келесі кодты жазуға болады:
Canvas-Brush-Color=clBlue;
Canvas-Ellipse(20,20,150,250);
Brush құралы - қылқалам, бұл фигураны бояу тәсілін анықтайды.
# Color - қылқалам түсі. Штрихтау кезінде - штрих сызығының түсі;
# Style - қылқалам стилі, құю түрлерін береді (тегіс, мөлдір немесе штрихтаудың түрлері);
# Bitmap - штрихтаудың өзіндік типін беруге мүмкіндік беретін қасиет.
1.3 C++ Builder программалау ортасының графикалық мүмкіншіліктері
C++ Builder программалау ортасы Windows GDI функцияларын түрлі деңгейде инкапсуляциялайды. Мұндағы маңызды тәсілдердің бірі монитор экранына графикалық компоненттер көмегімен өз суреттерін бейнелеуі. GDI функциясын тікелей шақыру кезінде оларға құрылғы контекстінің дескрипторын (device context handle) жіберіп отыру қажет, соның көмегімен сурет салу құралын - қалам, қылқалам және қаріптерді таңдауға береді. Графикалық суреттермен жұмыс аяқталғаннан кейін құрылғы контекстін бұрынғы қалпына келтіру керек.
Қолданушының графикалық компоненттермен жұмыс жасауы кезіндегі негізгі қызметі бұл - қолданылып отырған сурет салу құралын сипаттау болып табылады. Мұнда құралдарды таңдауда, құру кезінде жүйелік ресурстарды қадағалаудың қажеттілігі жоқ. Оның барлығына канвалар жауап береді.
C++ Builder программалау ортасында графикамен жұмыс жасау кезіндегі басты артықшылық: жүйенің графикалық ресурстары үшін кэш жадының қолданылуы. Егер программа белгілі бір түрдегі мысалы, қаламды қайта құрып, қайта қолданып, қайта босататын болса, онда программада бұл қадамды қаламды пайдаланған сайын қайталап отыру қажет болады. C++ Builder программалау ортасы графикалық ресурстарды сақтау үшін кэш жады қолданғандықтан, кэш жадыдағы сурет салуға қолданылатын құрал қайтадан таңдалатындығының ықтималдылығы артады. Осылайша, графикалық қосымшаларда қайталанатын операциялардың тиімділігі артатындығына тағы да көз жеткізуге болады. Келесі мысалда кодтың екі үзіндісі берілген, мұнда C++ Builder программалау ортасы графикалық программалауды қаншалықты жеңілдететіндігін байқауға болады. Бірінші үзінді Windows үшін OWL қосымшасының терезесіне көк контурлы сары эллипсті салу үшін GDI стандартты функциясын қолданады. Екінші үзіндіде дәл осы есеп сурет салуға арналған канвалар арқылы жүзеге асады.
Программаның орындалуы:
void TMyWindow::Paint(TDC& PaintDC, bool erase, TRect& rect) {
HPEN PenHandle, OldPenHandle;
HBRUSH BrushHandle, OldBrushHandle;
PenHandle = CreatePen(PS_SOLID, 1, RGB(0, 0, 255));
OldPenHandle = SelectObject(PaintDC, PenHandle);
BrushHandle = CreateSolidBrush(RGB(255, 255, 0));
OldBrushHandle = SelectObject(PaintDC, BrushHandle);
Ellipse(10, 10, 50, 50);
SelectObject(OldBrushHandle) ;
DeleteObject(BrushHandle) ;
SelectObject(OldPenHandle);
DeleteObject(PenHandle) ;
}
void_fastcall TFormI::FormPaint(TObject *Sender) {
Canvas-Pen-Color = clBlue; контурдың түсін таңдау
Canvas-Brush-Color = clYellow; бояудың түсін таңдау
Canvas-Ellipse(10, 20, 50, 50); эллипсті салу }
Канваның обьектілік класстары түрлі деңгейде, жоғары деңгейдегі функциядан бастап сызықтарды, фигураларды және мәтінді салуда, Windows графикалық функцияларын инкапсуляциялайды. Кейін орта деңгейдің сурет салу үшін канваны басқаруға арналған қасиеттер мен тәсілдер шығады. Төменгі деңгейде Windows GDI функцияларының өзіне қол жетімділік қамтамасыз етіледі. Төмендегі кестеде канваның негізгі тәсілдері мен қасиеттері сипатталған.
Кесте 3.
Канваның қасиеттері мен тәсілдері
Деңгей
Іс-әрекет
Тәсілдер
Қасиеттер
Жоғары
Қаламның ағымдағы орнын анықтайды
MoveTo
PenPos
Берілген нүктеге шейін түзу сызады
LineTo
PenPos
Берілген өлшемде тіктөртбұ-рышты салады
Rectangle
Берілген өлшемде эллипсті салады
Ellipse
Мәтіндік жолды шығарады
TextOut
Мәтіндік жолды шығару үшін ұзындық береді
TextHeight
Мәтіндік жолды шығару үшін енін береді
TextWidth
Тіктөртбұрыштың ішіне мәтінді шығару
TextRect
Көрсетілген тіктөртбұрышты түспен және ағымдағы қылқа-лам текстурасымен бояу
FillRect.
3-Кестенің жалғасы
Берілген түспен канва облысын бояу
FloodFill
Орта
Қаламның түсін, стилін, енін және режимін орнату үшін қолданылады
Pen
Канваның фоны мен графикалық фигураларды бояу кезінде түс пен текстураны беру үшін қолданылады
Brush
Берілген түсте, өлшемде және стильде қаріпті орнату үшін қолданылады
Font
Канваның пикселінің түсін жазу мен оқу үшін қолданылады
Pixels
Канваның тіктөртбұрышты облысын CopyMode режиміне көшіреді
CopyRect
CopyMode
Канваның тіктөртбұрышты облысын түстік ауысумен көшіреді
BrushCopy
Канваның берілген орнында биттік бейнені, пиктограмманы, метафайлды салады
Draw
Биттік бейнені, пиктограмманы, метафайлды берілген тіктөртбұрышта түгелдей толтыру үшін салады
StretchDraw
Төменгі
Windows GDI функциясын шақыру параметрі ретінде қолданылады.
Handle
C++Builder программалау ортасында графикаға қатысты үш негізгі обьект бар:
# Канва формаға, графикалық компонентке, принтерге немесе басқа да биттік бейнеге сурет салу үшін кеңістіктің биттік картасын көрсетеді. Канва өз алдына дербес обьект болып есептелмейді, ол әрқашан қандай да бір графикалық обьекттің қасиеті болып табылады.
# Графика кейбір файлдардың немесе ресурстардың (биттік бейнедегі, пиктограммалар немесе метафайл) растрлық суретін ұсынады. C++Builder TGraphic базалық класынан өңделетін TBitmap, Ticon және Tmetafile кластарын анықтайды. Tgraphic қосымшада барлық түрдегі графиканы қолдану үшін минималды стандартты интерфейсті ұсынады.
# Сурет графика үшін контейнерді ұсынады, яғни ол графикалық обьектілердің кез келген класын құрауы мүмкін. Осылайша, TPicture контейнерлік класы қолданушы анықтайтын биттік бейнені, пиктограмманы, метафайлды немесе басқа да графикалық типті құрай алады, ал қосымша стандартты түрде контейнердің барлық обьектілеріне жолыға алады. Суретті басқару компоненттері TPicture обьект типінің Picture қасиетін иеленеді, ол графиканың алуын түрлі суреттерін көрсетуге мүмкіндік береді.
Сурет обьектісі канваны (жалғыз ғана канвасы бар стандартты графикалық класс бұл - TBitmap) қажет ететін графиканы құрайды. Суреттермен жұмыс жасай отырып, TPicture контейнер арқылы қол жетімділікке ашылатын графикалық обьекттің тек қажетті ғана бөлігімен жұмыс істеуге болады. Егер контейнерлік графикалық обьектіге қол жетімділікті көрсету керек, ол берілген суреттің Graphic қасиетінде беріледі.
C++Builder программалау ортасында жұмыс жасау кезінде ол суреттерді және графикаларды суреттер файлдарында стандартты форматта сақтауға, жүктеуге мүмкіндік береді.
Файлдағы суретке бейнені жүктеу үшін суреттің мына әдісін қолдану керек LoadFromFile. Суретті файлда сақтау үшін суреттің SaveToFile әдісін сақтау керек. LoadFromFile әдісі құрылатын немесе жүктелетін графикалық обьект түрін тану үшін файлдың кеңейтілуін қолданады. SaveToFile тәсілі сақталатын графикалық обьекттің кеңейтілу түріне сәйкес файлды сақтайды.
Келесі мысал биттік бейнені суреттің компоненттік обьектіне жүктеу үшін кодтық модульдің мәтінінде жазылуы керек құрылымды құрайды. Биттік бейнені clouds.bmp файлынан жүктеу үшін сипаттаманың жазылуы:
void_fastcall TFormI::FormCreate(TObject *Sender) {
Imagel-Picture-LoadFromFile("c:\\ windows\\clouds.bmp");
}
Сурет .bmp стандартты кеңейтілуіндегі биттік бейнедегі файлды таниды және TBitmap класының обьекті түрінде өзінің графикасын құрады, кейін LoadFromFile әдісін атауы берілген файлдан суретті жүктеу үшін шақырады.
C++Builder программалау ортасы суретті бір канвадан екіншісіне көшірудің төрт әдісін қарастырады. Олардың сипаттамалары төмендегі кестеде көрсетілген (Кесте 4).
Кесте 4.
Биттік бейнені көшіру
Қажетті нәтиже
Әдіс
Графиканы толық көшіру
Draw
Масштабтау арқылы көшіру
StretchDraw
Канваның тіктөртбұрышты бөлігін көшіру
CopyRect
Растрлық опрециямен көшіру
BrushCopy
Графиканы жүктеу мен сұрыптау. Төмендегі кодты сипаттауда файлдағы суретті жүктеу үшін және сұрыптау үшін TBitmap класы қолданылады. Программаның нәтижесінде көрсетілгендей биттік бейненің барлық аумағы қамтылмаған, мұнда тек оның алғашқы 8*8 пикселі қолданылған.
TBitmap обьектін құру
Graphics::TBitmap* gBitmap = new Graphics::TBitmap;
Онда сурет жүктеледі
gBitmap-LoadFromFile("1.bmp");
Канваға жүктелген сурет салынады
Canvas-Draw(10,10,gBitmap);
Жүктелген сурет қылқалам ретінде алынады
оның тек 8*8 пикселі қолданылады
Canvas-Brush-Bitmap = gBitmap;
Эллипс салынады
Canvas-Ellipse(85,10,160,85);
Барлық функцияның параметрлері белгілі болады немесе мөлдір болады. Программаның нәтижесі 1-суретте көрсетілген.
Сурет 1. TBitmap класын пайдалану
.ico және .emf форматындағы графика үшін коды толық аналогты:
Graphics::TIcon* gIcon = new Graphics::TIcon;
Graphics::TMetafile* gMFile = new Graphics::TMetafile;
gIcon-LoadFromFile("1.ico");
gMFile-Enhanced=true;
gMFile-LoadFromFile("1.emf");
Canvas-Draw(10,10,gIcon);
Canvas-Draw(50,50,gMFile);
delete gIcon;
delete gMFile;
Графиканы сұрыптау үшін StretchDraw() функциясын қолдануға болады.
Для отрисовки графики можно использовать функцию StretchDraw(), ол Draw() функциясына қарағанда суретті салып қана қоймайды, сонымен қатар суретті масштабтайды.
TRect tRect(10,10,50,50);
Canvas-StretchDraw(tRect,gBitmap);
TRect tRect1(100,100,150,150);
Canvas-StretchDraw(tRect1,gIcon);
TRect tRect2(250,250,350,350);
Canvas-StretchDraw(tRect2,gMFile);
CopyRect() тәсілі графиканы сұрыптап, суреттің берілген облысын немесе Tcanvas обьектісінде берілген суреттің канвадағы бөлігін орналастыруға арналған. Көшіру канваның CopyMode қасиетін пайдалану режимінде жүзеге асады.
TBitmap обьектін құру
Graphics::TBitmap* gBitmap = new Graphics::TBitmap;
Онда сурет жүктеледі
gBitmap-LoadFromFile("1.bmp");
Көшіру облысының өлшемін анықтау
TRect tRectFrom(0,0,25,25);
TRect tRectTo(10,10,35,35);
CopyMode cmSrcCopy - тура көшіру
Canvas-CopyMode=cmSrcCopy;
Суреттің бөлігін көшіру
Canvas-CopyRect(tRectTo,gBitmap-C anvas,tRectFrom);
TBitmap, TIcon, Tmetafile қасиеттері мен басқа да әдістері. Олардың ішіндегі қасиеттердің маңыздылары:
# gBitmap-Handle, gBitmap-Palette - биттік карта мен оның палитрасының дескрипторы.
# HandleAllocated() - берілген элементтегі компоненттің дескрипторының бар екендігін тексереді. Егер дескрипторы бар болса, true мәні қайтарылады. Handle қасиетін тексергенге қарағанда, бұл әдіс дескриптор жоқ болған кезде оның құрылуына әкеліп соқпайды.
# ReleaseHandle() и ReleasePalette() - сурет дескрипторын және сәйкесінше палитра дескрипторын қайтарады (босатады). Бір обьект бірнеше дескрипторды иелене слатындығын ескеру қажет. Биттік картаның кез келген уақытта дескрипторға сырттай жолығуы кезінде және оның канвасына сурет салуға ниет білдіру кезінде обьект дескриптор құрамынының өздік көшірмесін алады.
# ReleaseMaskHandle() - нүктелік суреттегі маскасының дескрипторын босатады.
# Mask() - ағымдағы растрлық суретті бір түсті маскаға конверттейді. TransparentColor-ды ақ түспен, ал қалғандарын қара түспен алмастырады. Ол басқа биттік карталар үшін биттік картаны маскаға айналдыру үшін қолданылады. Айналдыру үшін MaskHandle қасиеті мен ReleaseMaskHandle() оқиғасы қолданылуы мүмкін.
# HandleType қасиеті - bmDIB немесе bmDDB мәндерін қабылдай алады және суреттің типін (DDB немесе DIB) тексеруге мүмкіндік береді.
* PixelFormat қасиеті - суреттің форматын өзгертуге және анықтауға мүмкіндік береді. Мүмкін мәндер - pfDevice, pf1bit, pf4bit, pf8bit, pf15bit, pf16bit, pf24bit, pf32bit, pfCustom. pfDevice режимі DDB биттік картасына сәйкес келеді. Сурет түсінің тереңдігі пиксельге 1, 4 және 8 бит суретте палитраның бар екендігін қарастырады. Басқа суреттер әрбір үш негізгі түстің - ... жалғасы
"Есептеу техникасы және
ақпараттық жүйе" кафедрасы
С++ тілінде программалау пәні бойынша
КУРСТЫҚ ЖОБА
Тақырыбы: Графикалық режим жұмыс функциялары
Орындаған: Ақпараттық жүйелер
мамандығының ___топ студенті__________
Тексерген: ____________________
Орал, 2013ж.
Мазмұны
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
3
1 С++ программалау тіліндегі графикалық режим ... ... ... ... ... ... ... .. ... ... ... ...
5
1.1 Графикалық режимде сурет салу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
5
1.2 Графикалық режимде суреттер салатын құралдар немесе канвалар ... ... ..
7
1.3 C++ Builder программалау ортасының графикалық мүмкіншіліктері ... ...
8
2 С++ Builder программалау ортасында графикалық режим функцияларымен жұмыс ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
17
2.1 Паравоздың суретін салатын программаны құру ... ... ... ... ... ... ... ... ... ... .
17
2.2 Тіктөртбұрыш пен эллипсті түрлі тәсілдермен бейнелеу және қылқаламдарды қолдану ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
18
2.3 Кеменің суретін салатын программа құру ... ... ... ... ... ... ... ... ... ... ... ... ... ..
19
2.4 С++ программалау тілінде мәтіндерді шығару ... ... ... ... ... ... ... ... ... ... ... ..
21
2.5 Графикалық режимде паралелопипедтің сурет салу ... ... ... ... ... ... ... ... ... .
22
2.6 API функциясының көмегімен Borland C++ Builder ортасында графиканы программалау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
23
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
25
Қолданылған әдебиеттер тізімі ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
27
Кіріспе
С++ программалау тілі заманауи обьектіге бағытталған программалауға бағыт беретін кілт болып табылады. Бұл тіл басқа программалау тілдері мен көптеген деректерді өңдеуге арналған заманауи құрылғылар тәуелді болып келетін концептуалды фрагментті қамтамасыз етеді.
1980 жылы Бьярна Страуструптың қабілеттілігінің арқасында ANSI - дің өкілі - С++ программалау тілі пайда болды. С++ тілі С тіліне қарағанда программистке дәстүрлі құрылымдық және объектілік бағытталған программаларды жасауға мүмкіндік береді. С++ тілі көмегімен профессионалды жоғары деңгейдегі программаларды жазуға болады. Қазіргі таңда C# және Java тілдері С++ программалау тілінің негізінде құрылған, олар бірдей базалық синтаксис пен өңдеу принциптерін қамтиды.
С++ тілі - тасымалданатын тіл. Бұл ортада жазылған қолданбалы программалар бір компьютерден екінші компьютерге оңай тасмалданады. Сонымен қатар тіл - оңай компиляцияланатын тіл болып табылады. Ол жүйелік программаларда пайдаланылады.
Программаның объектілік құрылымы ең алғаш күрделі жүйелерді имитациялық модульдеудің simula (ХХ ғасыр 60-шы жылдар) қолданған болатын. Объектілік тұрғыда программалаудың Delphi, C++ Builder Visual C++ құралдары кеңінен таралған.
Бұл курстық жұмыста С++ программалау тілінің графикалық режимінде графикалық объектілердің бейнеленуі үшін әр түрлі функциялар мен процедуралар қарастырылады.
Курстық жұмыстың тақырыбы - Графикалық режим жұмыс функциялары. Курстық жұмыстың негізгі мақсаты: С++ программалау тілінде графикалық режимнің жұмыс функцияларының мүмкіндіктерін зерттеу. Мақсатқа жету үшін мынадай міндеттер орындалуы тиіс:
+ С++ программалау тілінде графикалық режимді зерттеу;
+ Графиканың толық мүмкіндіктерін тереңірек зерттеу;
+ Графикалық жүйені басқару функцияларын зерттеу;
+ С++ программалау тілінде обьектілер мен фигураларды салу;
+ Графиктің режимде тәжірибелік жұмыс ретінде есептер шығару.
Графикалық режимде минималды объект, бағдарламашы басқара алатын қорытынды болып Пиксель мен Элемент табылады. Пиксель бейнелерге қарағанда аз мөлшерде болады. Оның геометриялық өлшемесі монитордың шешімі арқылы анықталады. Монитордың шешімі әдетте былай беріледі: rx*ry, мұндағы rx-экрандағы пиксельдердің, ал ry-тігінен орналасқан пиксельдердің саны. Машықта өнімдік емес, кейбір шешімдердің белгілі мағыналары қолданылады.
Графикалық режимде жұмыс жасау барысында мына қағидаларды есте сақтау қажет:
# Графикалық режимде экран нүктелердің жиынтығын білдіреді, олардың әрқайсысы 16 түстің біріне боялуы мүмкін;
# Нүктенің координатасы солдан оңға қарай және жоғарыдан төменге қарай артады. Сол жақ жоғарғы нүктесі (0,0) координатасына ие болса, оң жақ төменгі нүктенің координатасы (639,479) тең;
# Программа экранға графикалық фигураларды (сызық, шеңбер, тіктөртбұрыш) шығару үшін графикалық режимді іске қосу керек.
1 С++ программалау тіліндегі графикалық режим
1.1 Графикалық режимде сурет салу
Деректерді экранға шығарудың түрлі тәсілдері бар. Қазір қарастырылып отырған GDI (Graphics Device Interface) интерфейсі ағылшын тілінен аударғанда құрылғының графикалық интерфейсі деп аталады. Windows-та құрылғылардың жанамасы (DC) деп аталатын тағы бір термин бар. Ол сурет салуда канваны белгілеу үшін қолданылады. Жанама құрылғымен API функциясының деңгейінде әрекеттесу келесіге негізделген. Барлық графикалық обьектілер Handle қасиетін қолданады, ол обьектінің дескрипторын құрайды. Содан жанама құрылғының дескрипторын алу керек. Кейін қажетті обьектілерді алу керек: қалам, қылқалам және қаріптер. Содан соң ғана суретті салуға болады, ал салып болғаннан кейін ұсталған ресурстарды босату керек.
HDC DC;
DC=GetDC(Handle);
HBRUSH Brush=CreateSolidBrush(RGB(0,0,255) );
SelectObject(DC,Brush);
Ellipse(DC,20,20,150,250);
ReleaseDC(Handle,DC);
Графикалық суреттердің екі түрі бар: растрлық (bitmap) және векторлық. Растрлық графика экрандағы әрбір нүкте туралы ақпарат (нүктенің түсі) береді. Векторлық графика суретті сызықтар мен фигуралар жиыны ретінде сипаттайды.
Графикалық режимге көшудің кең таралған тәсілі режимді орнататын, рұқсатты да беретін әрі EGAVGA.BGI-ға жол сілтейтін initgraph функциясын қолдану болып табылады. Оның синтаксисі:
initgraph(*int far grdriver, *int far grmode, char *path);
Бірінші аргумент видеоадаптердің типін білдіреді. Ол сандық мәнді қабылдайды. Аргумент grdriver:
Кесте 1.
Видеоадаптердің типтері
Видеоадаптердің типі
Аргументтің мәні:
Автотану
DETECT немесе 0
CGA
1
MCGA
2
EGA
3
EGA64
4
EGA-Mono
5
Тіркелгені
6
Mono Hercules
7
ATT400
8
VGA
9
PC3270
10
Екінші аргумент - графикалық режим, шешімділік беру болып табылады.
Кесте 2.
Графикалық режимнің аргументтік мәндері
Режим
Аргументтің мәні
VGA 640x200 16 түс (төменгі шешімділік)
0
VGA 640x350 16 түс (орташа шешімділік)
1
VGA 650х480 16 түс (жоғары шешімділік)
2
EGA 640x200 16 түс (төменгі шешімділік)
0
EGA 640x350 16 түс (орташа шешімділік)
1
Үшінші аргумент - EGAVGA.BGI драйверінінің файлына жол сілтеу. Егер бұл файл c:\tc\bgi\ папкасында орындалса, оның мәні мынадай болады: c:\\tc\\bgi\\. Си тілінде барлық жолдар екі слэшпен жазылады. Егер библиеотекалық файлға жол сілтенетін болса, тырнақшаға алынады:
#include "c:\tc\bin\my\biblioteka.h"
Сонымен компьютерді графикалық режимге ауыстыру үшін барлығы дайын.
#include conio.h
#includegraphics .h
void main()
{
clrscr();
cprintf("Мәтіндік режим.");
getch();
Графикалық режимге көшу!
int a=9, b=2;
initgraph(&a, &b, "c:\\tc\\bgi\\");
outtext("Бұл графикалық режим!");
getch();
closegraph();
cprintf("\n Мәтіндік режим!");
getch();
}
Графикалық режимнің қалпы келесі түрде жазылады:
графикалық программаның қалпы
#include graphics.h
#include conio.h
#define PATHTODRIVER "c: WborlandcWbgiW"
void main (void)
{
int gdriver = DETECT; драйвер
int gmode; режим
int errorcode; қателік коды
initgraph(&gdriver, &gmode, PATHTODRIVER);
errorcode = graphresult{);
if (errorcode != grOk) графикалық режимді
инициялдау қателігі
{
printf("Қателік: %d\n", errorcode);
puts("Программаны аяқтау үшін Enter басыңыз")
getch();
return;
келесі программаның нұсқауы
closegraph(); графикалық режимнің аяқталуы
}
1.2 Графикалық режимде суреттер салатын құралдар немесе канвалар
Кенеп түсінігі. TCanvas классын енгізу графикалық қосымшалардың жазылуын жеңілдетеді. Ол сурет салынатын канвалардың орнын белгідеу үшін қолданылады: терезе облысында, жұмыс үстелінде, принтерге шығаруды және тағы басқалары.
TCanvas классы келесі қасиеттерге ие:
# Brush - геометриялық фигураларды бояу кезінде қалып пен құю түсін анықтайды;
# Font - мәтінді шығаруға арналған қаріптер;
# Handle - API функциясын шақыру үшін қолданылатын канваның дескрипторы;
# Pen - сызықтың стилі мен түсін анықтайды;
# CopyMode - суреттің орындалу тәсілін анықтайды (инверсті, қалыпты және т.б.);
# ClipRect - канвадағы тіктөртбұрышты облысты салу.
Контурларды салу үшін Pen айнымалысы қолданылады, облыстарды бояу үшін Brush айнымалысы қолданылады. TСanvas түрлі фигураларды салуға арналған көптеген тәсілдерден тұрады, мәтін шығарады, шығарылатын суреттің масштабын анықтайды және тағы басқалары. Канваны қолдана отырып келесі кодты жазуға болады:
Canvas-Brush-Color=clBlue;
Canvas-Ellipse(20,20,150,250);
Brush құралы - қылқалам, бұл фигураны бояу тәсілін анықтайды.
# Color - қылқалам түсі. Штрихтау кезінде - штрих сызығының түсі;
# Style - қылқалам стилі, құю түрлерін береді (тегіс, мөлдір немесе штрихтаудың түрлері);
# Bitmap - штрихтаудың өзіндік типін беруге мүмкіндік беретін қасиет.
1.3 C++ Builder программалау ортасының графикалық мүмкіншіліктері
C++ Builder программалау ортасы Windows GDI функцияларын түрлі деңгейде инкапсуляциялайды. Мұндағы маңызды тәсілдердің бірі монитор экранына графикалық компоненттер көмегімен өз суреттерін бейнелеуі. GDI функциясын тікелей шақыру кезінде оларға құрылғы контекстінің дескрипторын (device context handle) жіберіп отыру қажет, соның көмегімен сурет салу құралын - қалам, қылқалам және қаріптерді таңдауға береді. Графикалық суреттермен жұмыс аяқталғаннан кейін құрылғы контекстін бұрынғы қалпына келтіру керек.
Қолданушының графикалық компоненттермен жұмыс жасауы кезіндегі негізгі қызметі бұл - қолданылып отырған сурет салу құралын сипаттау болып табылады. Мұнда құралдарды таңдауда, құру кезінде жүйелік ресурстарды қадағалаудың қажеттілігі жоқ. Оның барлығына канвалар жауап береді.
C++ Builder программалау ортасында графикамен жұмыс жасау кезіндегі басты артықшылық: жүйенің графикалық ресурстары үшін кэш жадының қолданылуы. Егер программа белгілі бір түрдегі мысалы, қаламды қайта құрып, қайта қолданып, қайта босататын болса, онда программада бұл қадамды қаламды пайдаланған сайын қайталап отыру қажет болады. C++ Builder программалау ортасы графикалық ресурстарды сақтау үшін кэш жады қолданғандықтан, кэш жадыдағы сурет салуға қолданылатын құрал қайтадан таңдалатындығының ықтималдылығы артады. Осылайша, графикалық қосымшаларда қайталанатын операциялардың тиімділігі артатындығына тағы да көз жеткізуге болады. Келесі мысалда кодтың екі үзіндісі берілген, мұнда C++ Builder программалау ортасы графикалық программалауды қаншалықты жеңілдететіндігін байқауға болады. Бірінші үзінді Windows үшін OWL қосымшасының терезесіне көк контурлы сары эллипсті салу үшін GDI стандартты функциясын қолданады. Екінші үзіндіде дәл осы есеп сурет салуға арналған канвалар арқылы жүзеге асады.
Программаның орындалуы:
void TMyWindow::Paint(TDC& PaintDC, bool erase, TRect& rect) {
HPEN PenHandle, OldPenHandle;
HBRUSH BrushHandle, OldBrushHandle;
PenHandle = CreatePen(PS_SOLID, 1, RGB(0, 0, 255));
OldPenHandle = SelectObject(PaintDC, PenHandle);
BrushHandle = CreateSolidBrush(RGB(255, 255, 0));
OldBrushHandle = SelectObject(PaintDC, BrushHandle);
Ellipse(10, 10, 50, 50);
SelectObject(OldBrushHandle) ;
DeleteObject(BrushHandle) ;
SelectObject(OldPenHandle);
DeleteObject(PenHandle) ;
}
void_fastcall TFormI::FormPaint(TObject *Sender) {
Canvas-Pen-Color = clBlue; контурдың түсін таңдау
Canvas-Brush-Color = clYellow; бояудың түсін таңдау
Canvas-Ellipse(10, 20, 50, 50); эллипсті салу }
Канваның обьектілік класстары түрлі деңгейде, жоғары деңгейдегі функциядан бастап сызықтарды, фигураларды және мәтінді салуда, Windows графикалық функцияларын инкапсуляциялайды. Кейін орта деңгейдің сурет салу үшін канваны басқаруға арналған қасиеттер мен тәсілдер шығады. Төменгі деңгейде Windows GDI функцияларының өзіне қол жетімділік қамтамасыз етіледі. Төмендегі кестеде канваның негізгі тәсілдері мен қасиеттері сипатталған.
Кесте 3.
Канваның қасиеттері мен тәсілдері
Деңгей
Іс-әрекет
Тәсілдер
Қасиеттер
Жоғары
Қаламның ағымдағы орнын анықтайды
MoveTo
PenPos
Берілген нүктеге шейін түзу сызады
LineTo
PenPos
Берілген өлшемде тіктөртбұ-рышты салады
Rectangle
Берілген өлшемде эллипсті салады
Ellipse
Мәтіндік жолды шығарады
TextOut
Мәтіндік жолды шығару үшін ұзындық береді
TextHeight
Мәтіндік жолды шығару үшін енін береді
TextWidth
Тіктөртбұрыштың ішіне мәтінді шығару
TextRect
Көрсетілген тіктөртбұрышты түспен және ағымдағы қылқа-лам текстурасымен бояу
FillRect.
3-Кестенің жалғасы
Берілген түспен канва облысын бояу
FloodFill
Орта
Қаламның түсін, стилін, енін және режимін орнату үшін қолданылады
Pen
Канваның фоны мен графикалық фигураларды бояу кезінде түс пен текстураны беру үшін қолданылады
Brush
Берілген түсте, өлшемде және стильде қаріпті орнату үшін қолданылады
Font
Канваның пикселінің түсін жазу мен оқу үшін қолданылады
Pixels
Канваның тіктөртбұрышты облысын CopyMode режиміне көшіреді
CopyRect
CopyMode
Канваның тіктөртбұрышты облысын түстік ауысумен көшіреді
BrushCopy
Канваның берілген орнында биттік бейнені, пиктограмманы, метафайлды салады
Draw
Биттік бейнені, пиктограмманы, метафайлды берілген тіктөртбұрышта түгелдей толтыру үшін салады
StretchDraw
Төменгі
Windows GDI функциясын шақыру параметрі ретінде қолданылады.
Handle
C++Builder программалау ортасында графикаға қатысты үш негізгі обьект бар:
# Канва формаға, графикалық компонентке, принтерге немесе басқа да биттік бейнеге сурет салу үшін кеңістіктің биттік картасын көрсетеді. Канва өз алдына дербес обьект болып есептелмейді, ол әрқашан қандай да бір графикалық обьекттің қасиеті болып табылады.
# Графика кейбір файлдардың немесе ресурстардың (биттік бейнедегі, пиктограммалар немесе метафайл) растрлық суретін ұсынады. C++Builder TGraphic базалық класынан өңделетін TBitmap, Ticon және Tmetafile кластарын анықтайды. Tgraphic қосымшада барлық түрдегі графиканы қолдану үшін минималды стандартты интерфейсті ұсынады.
# Сурет графика үшін контейнерді ұсынады, яғни ол графикалық обьектілердің кез келген класын құрауы мүмкін. Осылайша, TPicture контейнерлік класы қолданушы анықтайтын биттік бейнені, пиктограмманы, метафайлды немесе басқа да графикалық типті құрай алады, ал қосымша стандартты түрде контейнердің барлық обьектілеріне жолыға алады. Суретті басқару компоненттері TPicture обьект типінің Picture қасиетін иеленеді, ол графиканың алуын түрлі суреттерін көрсетуге мүмкіндік береді.
Сурет обьектісі канваны (жалғыз ғана канвасы бар стандартты графикалық класс бұл - TBitmap) қажет ететін графиканы құрайды. Суреттермен жұмыс жасай отырып, TPicture контейнер арқылы қол жетімділікке ашылатын графикалық обьекттің тек қажетті ғана бөлігімен жұмыс істеуге болады. Егер контейнерлік графикалық обьектіге қол жетімділікті көрсету керек, ол берілген суреттің Graphic қасиетінде беріледі.
C++Builder программалау ортасында жұмыс жасау кезінде ол суреттерді және графикаларды суреттер файлдарында стандартты форматта сақтауға, жүктеуге мүмкіндік береді.
Файлдағы суретке бейнені жүктеу үшін суреттің мына әдісін қолдану керек LoadFromFile. Суретті файлда сақтау үшін суреттің SaveToFile әдісін сақтау керек. LoadFromFile әдісі құрылатын немесе жүктелетін графикалық обьект түрін тану үшін файлдың кеңейтілуін қолданады. SaveToFile тәсілі сақталатын графикалық обьекттің кеңейтілу түріне сәйкес файлды сақтайды.
Келесі мысал биттік бейнені суреттің компоненттік обьектіне жүктеу үшін кодтық модульдің мәтінінде жазылуы керек құрылымды құрайды. Биттік бейнені clouds.bmp файлынан жүктеу үшін сипаттаманың жазылуы:
void_fastcall TFormI::FormCreate(TObject *Sender) {
Imagel-Picture-LoadFromFile("c:\\ windows\\clouds.bmp");
}
Сурет .bmp стандартты кеңейтілуіндегі биттік бейнедегі файлды таниды және TBitmap класының обьекті түрінде өзінің графикасын құрады, кейін LoadFromFile әдісін атауы берілген файлдан суретті жүктеу үшін шақырады.
C++Builder программалау ортасы суретті бір канвадан екіншісіне көшірудің төрт әдісін қарастырады. Олардың сипаттамалары төмендегі кестеде көрсетілген (Кесте 4).
Кесте 4.
Биттік бейнені көшіру
Қажетті нәтиже
Әдіс
Графиканы толық көшіру
Draw
Масштабтау арқылы көшіру
StretchDraw
Канваның тіктөртбұрышты бөлігін көшіру
CopyRect
Растрлық опрециямен көшіру
BrushCopy
Графиканы жүктеу мен сұрыптау. Төмендегі кодты сипаттауда файлдағы суретті жүктеу үшін және сұрыптау үшін TBitmap класы қолданылады. Программаның нәтижесінде көрсетілгендей биттік бейненің барлық аумағы қамтылмаған, мұнда тек оның алғашқы 8*8 пикселі қолданылған.
TBitmap обьектін құру
Graphics::TBitmap* gBitmap = new Graphics::TBitmap;
Онда сурет жүктеледі
gBitmap-LoadFromFile("1.bmp");
Канваға жүктелген сурет салынады
Canvas-Draw(10,10,gBitmap);
Жүктелген сурет қылқалам ретінде алынады
оның тек 8*8 пикселі қолданылады
Canvas-Brush-Bitmap = gBitmap;
Эллипс салынады
Canvas-Ellipse(85,10,160,85);
Барлық функцияның параметрлері белгілі болады немесе мөлдір болады. Программаның нәтижесі 1-суретте көрсетілген.
Сурет 1. TBitmap класын пайдалану
.ico және .emf форматындағы графика үшін коды толық аналогты:
Graphics::TIcon* gIcon = new Graphics::TIcon;
Graphics::TMetafile* gMFile = new Graphics::TMetafile;
gIcon-LoadFromFile("1.ico");
gMFile-Enhanced=true;
gMFile-LoadFromFile("1.emf");
Canvas-Draw(10,10,gIcon);
Canvas-Draw(50,50,gMFile);
delete gIcon;
delete gMFile;
Графиканы сұрыптау үшін StretchDraw() функциясын қолдануға болады.
Для отрисовки графики можно использовать функцию StretchDraw(), ол Draw() функциясына қарағанда суретті салып қана қоймайды, сонымен қатар суретті масштабтайды.
TRect tRect(10,10,50,50);
Canvas-StretchDraw(tRect,gBitmap);
TRect tRect1(100,100,150,150);
Canvas-StretchDraw(tRect1,gIcon);
TRect tRect2(250,250,350,350);
Canvas-StretchDraw(tRect2,gMFile);
CopyRect() тәсілі графиканы сұрыптап, суреттің берілген облысын немесе Tcanvas обьектісінде берілген суреттің канвадағы бөлігін орналастыруға арналған. Көшіру канваның CopyMode қасиетін пайдалану режимінде жүзеге асады.
TBitmap обьектін құру
Graphics::TBitmap* gBitmap = new Graphics::TBitmap;
Онда сурет жүктеледі
gBitmap-LoadFromFile("1.bmp");
Көшіру облысының өлшемін анықтау
TRect tRectFrom(0,0,25,25);
TRect tRectTo(10,10,35,35);
CopyMode cmSrcCopy - тура көшіру
Canvas-CopyMode=cmSrcCopy;
Суреттің бөлігін көшіру
Canvas-CopyRect(tRectTo,gBitmap-C anvas,tRectFrom);
TBitmap, TIcon, Tmetafile қасиеттері мен басқа да әдістері. Олардың ішіндегі қасиеттердің маңыздылары:
# gBitmap-Handle, gBitmap-Palette - биттік карта мен оның палитрасының дескрипторы.
# HandleAllocated() - берілген элементтегі компоненттің дескрипторының бар екендігін тексереді. Егер дескрипторы бар болса, true мәні қайтарылады. Handle қасиетін тексергенге қарағанда, бұл әдіс дескриптор жоқ болған кезде оның құрылуына әкеліп соқпайды.
# ReleaseHandle() и ReleasePalette() - сурет дескрипторын және сәйкесінше палитра дескрипторын қайтарады (босатады). Бір обьект бірнеше дескрипторды иелене слатындығын ескеру қажет. Биттік картаның кез келген уақытта дескрипторға сырттай жолығуы кезінде және оның канвасына сурет салуға ниет білдіру кезінде обьект дескриптор құрамынының өздік көшірмесін алады.
# ReleaseMaskHandle() - нүктелік суреттегі маскасының дескрипторын босатады.
# Mask() - ағымдағы растрлық суретті бір түсті маскаға конверттейді. TransparentColor-ды ақ түспен, ал қалғандарын қара түспен алмастырады. Ол басқа биттік карталар үшін биттік картаны маскаға айналдыру үшін қолданылады. Айналдыру үшін MaskHandle қасиеті мен ReleaseMaskHandle() оқиғасы қолданылуы мүмкін.
# HandleType қасиеті - bmDIB немесе bmDDB мәндерін қабылдай алады және суреттің типін (DDB немесе DIB) тексеруге мүмкіндік береді.
* PixelFormat қасиеті - суреттің форматын өзгертуге және анықтауға мүмкіндік береді. Мүмкін мәндер - pfDevice, pf1bit, pf4bit, pf8bit, pf15bit, pf16bit, pf24bit, pf32bit, pfCustom. pfDevice режимі DDB биттік картасына сәйкес келеді. Сурет түсінің тереңдігі пиксельге 1, 4 және 8 бит суретте палитраның бар екендігін қарастырады. Басқа суреттер әрбір үш негізгі түстің - ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz