Графикалық функциялар

Мазмұны

Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 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 түстің біріне боялуы мүмкін;
Қолданылған әдебиеттер тізімі

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.
        
        ҚАЗАҚСТАН РЕСПУБЛИКАСЫНЫҢ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
"Есептеу техникасы және
ақпараттық жүйе" кафедрасы
пәні бойынша
КУРСТЫҚ ЖОБА
Тақырыбы:
Орындаған:
мамандығының ___топ студенті__________
Тексерген: ____________________
Орал, 2013ж.
Мазмұны
Кіріспе....................................................................................................................
3
1 С++ ... ... ... режим.............................................
5
1.1 Графикалық режимде сурет салу....................................................................
5
1.2 Графикалық режимде ... ... ... ... ... 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 ... ... ... әдебиеттер тізімі.............................................................................
27
Кіріспе
С++ программалау тілі заманауи обьектіге бағытталған программалауға ... ... кілт ... ... Бұл тіл ... ... ... мен көптеген деректерді өңдеуге арналған заманауи құрылғылар тәуелді ... ... ... ... ... ... жылы ... Страуструптың қабілеттілігінің арқасында ANSI - дің өкілі - С++ программалау тілі ... ... С++ тілі С ... ... ... дәстүрлі құрылымдық және объектілік бағытталған программаларды жасауға ... ... С++ тілі ... ... ... ... ... жазуға болады. Қазіргі таңда C# және Java тілдері С++ программалау тілінің негізінде құрылған, олар бірдей базалық синтаксис пен ... ... ... тілі - ... тіл. Бұл ... ... қолданбалы программалар бір компьютерден екінші компьютерге оңай тасмалданады. Сонымен қатар тіл - оңай компиляцияланатын тіл ... ... Ол ... ... ... ... объектілік құрылымы ең алғаш күрделі жүйелерді имитациялық модульдеудің simula (ХХ ғасыр 60-шы жылдар) қолданған болатын. Объектілік тұрғыда программалаудың Delphi, C++ Builder Visual C++ ... ... ... ... ... С++ программалау тілінің графикалық режимінде графикалық объектілердің бейнеленуі үшін әр ... ... мен ... қарастырылады.
Курстық жұмыстың тақырыбы - . Курстық жұмыстың негізгі мақсаты: С++ программалау тілінде ... ... ... ... ... ... ... жету үшін мынадай міндеттер орындалуы тиіс:
* С++ программалау тілінде ... ... ... ... ... ... ... зерттеу;
* Графикалық жүйені басқару функцияларын зерттеу;
* С++ программалау тілінде обьектілер мен ... ... ... ... тәжірибелік жұмыс ретінде есептер шығару.
Графикалық режимде минималды объект, бағдарламашы басқара алатын қорытынды болып мен ... ... ... қарағанда аз мөлшерде болады. Оның геометриялық өлшемесі монитордың шешімі арқылы анықталады. ... ... ... ... ... rx*ry, мұндағы rx-экрандағы пиксельдердің, ал ry-тігінен орналасқан пиксельдердің саны. Машықта ... ... ... ... ... мағыналары қолданылады.
Графикалық режимде жұмыс жасау барысында мына қағидаларды есте сақтау қажет:
* Графикалық режимде экран нүктелердің жиынтығын білдіреді, олардың әрқайсысы 16 ... ... ... ... ... координатасы солдан оңға қарай және жоғарыдан төменге қарай артады. Сол жақ жоғарғы нүктесі (0,0) координатасына ие ... оң жақ ... ... координатасы (639,479) тең;
* Программа экранға графикалық фигураларды (сызық, шеңбер, тіктөртбұрыш) шығару үшін графикалық режимді іске қосу керек.
1 С++ ... ... ... ... ... режимде сурет салу
Деректерді экранға шығарудың түрлі тәсілдері бар. Қазір қарастырылып отырған GDI (Graphics Device Interface) интерфейсі ағылшын тілінен аударғанда деп ... ... ... ... (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 ... *int far grmode, char ... ... ... типін білдіреді. Ол сандық мәнді қабылдайды. Аргумент 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 түс ... ... 640x350 16 түс ... ... 650х480 16 түс ... шешімділік)
2
EGA 640x200 16 түс (төменгі шешімділік)
0
EGA 640x350 16 түс (орташа ... ... - ... ... ... жол сілтеу. Егер бұл файл c:\tc\bgi\ папкасында орындалса, оның мәні мынадай болады: c:\\tc\\bgi\\. Си ... ... ... екі ... ... Егер ... ... жол сілтенетін болса, тырнақшаға алынады:
#include "c:\tc\bin\my\biblioteka.h"
Сонымен компьютерді графикалық режимге ауыстыру үшін барлығы дайын.
#include
#include
void main()
{clrscr(); cprintf("Мәтіндік ... ... ... a=9, ... &b, ... ... ... Мәтіндік режим!");
getch();} Графикалық режимнің қалпы келесі түрде ... ... ... ...
#include
#define PATHTODRIVER "c: WborlandcWbgiW"
void main (void)
{
int gdriver = DETECT; // драйвер
int gmode; // режим
int ... // ... ... &gmode, ... = ... (errorcode != grOk) // графикалық режимді
// инициялдау қателігі
{
printf("Қателік: %d\n", errorcode);
puts("Программаны аяқтау үшін ... ... ... нұсқауы
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 ... ... ... ... 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) ... ... ... 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, ... ... ... ... ... *Sender) ... = clBlue; // ... түсін таңдау
Canvas->Brush->Color = clYellow; // бояудың түсін таңдау
Canvas->Ellipse(10, 20, 50, 50); // эллипсті салу }
Канваның обьектілік класстары түрлі деңгейде, ... ... ... ... сызықтарды, фигураларды және мәтінді салуда, Windows графикалық функцияларын инкапсуляциялайды. ... орта ... ... салу үшін канваны басқаруға арналған қасиеттер мен тәсілдер шығады. Төменгі деңгейде Windows GDI функцияларының өзіне қол ... ... ... ... ... ... ... тәсілдері мен қасиеттері сипатталған.
Кесте 3.
Канваның қасиеттері мен тәсілдері
Деңгей
Іс-әрекет
Тәсілдер
Қасиеттер
Жоғары
Қаламның ағымдағы орнын анықтайды
MoveTo
PenPos
Берілген нүктеге ... түзу ... ... ... ... өлшемде эллипсті салады
Ellipse
Мәтіндік жолды шығарады
TextOut
Мәтіндік жолды шығару үшін ұзындық береді
TextHeight
Мәтіндік жолды шығару үшін енін ... ... ... ... ... түспен және ағымдағы қылқа-лам текстурасымен бояу
FillRect.
3-Кестенің жалғасы
Берілген түспен канва облысын бояу
FloodFill
Орта
Қаламның түсін, стилін, енін және режимін ... үшін ... фоны мен ... ... бояу ... түс пен ... беру үшін ... түсте, өлшемде және стильде қаріпті орнату үшін қолданылады
Font
Канваның пикселінің түсін жазу мен оқу үшін қолданылады
Pixels
Канваның тіктөртбұрышты облысын CopyMode ... ... ... ... ... ... ... берілген орнында биттік бейнені, пиктограмманы, метафайлды салады
Draw
Биттік бейнені, ... ... ... ... түгелдей толтыру үшін салады
StretchDraw
Төменгі
Windows GDI функциясын шақыру параметрі ретінде қолданылады.
Handle
C++Builder программалау ортасында графикаға қатысты үш негізгі обьект бар:
* ... ... ... ... ... ... ... да биттік бейнеге сурет салу үшін кеңістіктің биттік картасын көрсетеді. Канва өз алдына дербес обьект болып есептелмейді, ол әрқашан қандай да бір ... ... ... ... ... Графика кейбір файлдардың немесе ресурстардың (биттік бейнедегі, пиктограммалар немесе ... ... ... ұсынады. C++Builder TGraphic базалық класынан өңделетін TBitmap, Ticon және Tmetafile кластарын анықтайды. Tgraphic қосымшада барлық түрдегі графиканы ... үшін ... ... ... ... ... графика үшін контейнерді ұсынады, яғни ол графикалық обьектілердің кез келген класын құрауы мүмкін. ... TPicture ... ... ... ... ... ... пиктограмманы, метафайлды немесе басқа да графикалық типті құрай алады, ал қосымша стандартты түрде контейнердің барлық обьектілеріне жолыға алады. Суретті ... ... TPicture ... ... Picture ... ... ол графиканың алуын түрлі суреттерін көрсетуге мүмкіндік ... ... ... ... ғана канвасы бар стандартты графикалық класс бұл - TBitmap) ... ... ... құрайды. Суреттермен жұмыс жасай отырып, TPicture контейнер арқылы қол жетімділікке ашылатын графикалық обьекттің тек қажетті ғана бөлігімен жұмыс істеуге болады. Егер ... ... ... қол ... ... керек, ол берілген суреттің Graphic қасиетінде беріледі.
C++Builder ... ... ... жасау кезінде ол суреттерді және графикаларды суреттер файлдарында ... ... ... ... мүмкіндік береді.
Файлдағы суретке бейнені жүктеу үшін ... мына ... ... ... ... ... файлда сақтау үшін суреттің SaveToFile әдісін сақтау керек. LoadFromFile әдісі құрылатын немесе жүктелетін ... ... ... тану үшін ... ... ... ... тәсілі сақталатын графикалық обьекттің кеңейтілу түріне сәйкес файлды сақтайды.
Келесі мысал биттік бейнені суреттің компоненттік обьектіне жүктеу үшін ... ... ... ... ... ... ... Биттік бейнені clouds.bmp файлынан жүктеу үшін сипаттаманың жазылуы:
void_fastcall TFormI::FormCreate(TObject *Sender) {
Imagel->Picture->LoadFromFile("c:\\windows\\clouds.bmp");
}
Сурет .bmp стандартты кеңейтілуіндегі биттік бейнедегі файлды таниды және TBitmap ... ... ... ... графикасын құрады, кейін LoadFromFile әдісін атауы берілген файлдан суретті жүктеу үшін шақырады.
C++Builder программалау ортасы суретті бір ... ... ... төрт ... ... ... сипаттамалары төмендегі кестеде көрсетілген (Кесте 4).
Кесте 4.
Биттік бейнені ... ... ... ... ... көшіру
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->Ellipse(85,10,160,85);
Барлық функцияның параметрлері белгілі болады немесе мөлдір болады. ... ... ... көрсетілген.
Сурет 1. TBitmap класын пайдалану
.ico және .emf форматындағы графика үшін коды ... ... gIcon = new ... gMFile = new ... 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 ... ... gBitmap = new Graphics::TBitmap;
// Онда сурет жүктеледі
gBitmap->LoadFromFile("1.bmp");
// Көшіру ... ... ... ... ... CopyMode ... - тура көшіру
Canvas->CopyMode=cmSrcCopy;
// Суреттің бөлігін көшіру
Canvas->CopyRect(tRectTo,gBitmap->Canvas,tRectFrom);
TBitmap, TIcon, ... ... мен ... да ... Олардың ішіндегі қасиеттердің маңыздылары:
* gBitmap->Handle, gBitmap->Palette - биттік карта мен оның палитрасының дескрипторы.
* HandleAllocated() - ... ... ... дескрипторының бар екендігін тексереді. Егер дескрипторы бар болса, true мәні ... Handle ... ... ... бұл әдіс ... жоқ ... ... оның құрылуына әкеліп соқпайды.
* ReleaseHandle() и ReleasePalette() - сурет дескрипторын және сәйкесінше ... ... ... ... Бір ... ... ... иелене слатындығын ескеру қажет. Биттік картаның кез келген уақытта дескрипторға сырттай жолығуы кезінде және оның ... ... ... ниет ... кезінде обьект дескриптор құрамынының өздік көшірмесін алады.
* ReleaseMaskHandle() - ... ... ... ... ... Mask() - ағымдағы растрлық суретті бір түсті маскаға конверттейді. TransparentColor-ды ақ түспен, ал ... қара ... ... Ол басқа биттік карталар үшін биттік картаны маскаға ... үшін ... ... үшін ... ... мен ... ... қолданылуы мүмкін.
* HandleType қасиеті - bmDIB немесе bmDDB ... ... ... және ... ... (DDB немесе DIB) тексеруге мүмкіндік береді.
* PixelFormat қасиеті - ... ... ... және ... ... ... Мүмкін мәндер - pfDevice, pf1bit, pf4bit, pf8bit, pf15bit, pf16bit, pf24bit, pf32bit, pfCustom. pfDevice режимі DDB биттік картасына сәйкес ... ... ... ... ... 1, 4 және 8 бит ... ... бар екендігін қарастырады. Басқа суреттер әрбір үш негізгі түстің - ... (R), ... (G) және ... (В) нүктесіндегі жарық мәнін сақтайды. 15 биттің разрядтылығы 5-5-5 ... 16 бит - RGB 565, 24 бит - RGB888 ... ... ... ... 32 бит режимі 24-биттікке ұқсайды, бірақ оған әрбір нүктенің ... ... ... қосымша төртінші канал (альфа-канал) қосылған. pfCustom режимі программист үшін өзінің ... ... ... асыруға арналған.
Графиктік файлдардың форматтары. C++ Builder ортасында графиктік файлдардың 3 ... ... ... жасауға болады.
Кесте 5.
Графиктік файлдардың форматтары
Файл типі
Кеңейтілімі
Биттік матрица (Bitmaps)
Пиктограммалар
Метафайлдар ... ... Image file ...
. bmp
. ico
. wmf
. ipg; . ipeg
. emf
Бұл файлдардың барлығында суреттер немесе кескіндер ... ... ... файлдағы сақталу тәсілдері әртүрлі болады. Мысалы, .btm; .ico - кескіндер файлға биттік матрица түрінде сақталады.Бұл ... ... ... ... пиксельдің (нүктенің) түсін көрсетеді. Бұл биттік матрицада сақталған кескінді кез келген компьютер өзінің ... ... ... алады. Келесі .іco кеңейтілімімен берілген файлда пиктограммалар сақталады. Пиктограммалардың ... ... ... ... ... кескіннің биттері сақталмайды, керісінше сол кескінді салу әдістері ... Яғни олар ... салу ... ... ... ... ... C++ Builder-дің класстары. C++ Builder ортасында графиктік кескінді сақтауға арналған келесі кластар қолданылады:
TBitMap Бұл кластардың барлығы үшін ... ... ... ... ... ... класы - өзінде
TMetafile қалған 3 кластың қасиеттерін қамти алады.
TPicture ... ... ... ... ... шақыру мүмкін болады.
Image - бұл Additational жапсырмасында орналасқан компонент. Мұнда жоғарыда айтылған ... ... ... ... көруге болады.
Кесте 6.
Image компонентінің негізгі қасиеттері
Қасиет атауы
Қызметі және қабылдайтын мәндері
Picture(TPicture)
бұл қасиет файлдағы ... Image ... ... Image терезесінде суретті көруге ғана емес, сақтауға да болады.
AvtoSize (Boolean)
Егер бұл қасиет true мәнге ие ... онда іmage ... ... ол көрсететін кескін өлшеміне қарай келтіріледі.
Stretch (Boolean)
Егер бұл қасиет true мәнге ие болса, керісінше, кескін немесе ... ... іmage ... ... ... Бұл ... пиктограммаларға әсер етпейді, себебі пиктограммалардың өлшемдері өзгермейді.
Center (Boolean)
Егер бұл қасиет true мәнге ие болса, онда бұл кескін іmage ... ... ... ... ... ... бұл қасиет true мәнге ие болса, онда кескін көрінбей тұрады, (түссіз (празрачный) болып кетеді), бұл әсіресе бір кескіннің үстіне екіншісін ... жиі ... Бұл ... тек ... ... ғана жүреді.
Іmage компонентінің терезесіне кескінді жүктеу үшін немесе сақтау үшін сәйкесінше OpenPictureDialog және SavePictureDialog стандарт диалогтық терезе қолданылады.
MoveTo(x,y) - ... ... ... (x,y) ... ... қояды;
Draw(x,y; Graphic:); - бұл графиктік обьектіні канваға шығарады. График обьектісінің орнында .bmp, .ico немесе ... ... ...
Суретке мәтін шығару.TextOut(x,y; const AnsiString Text); - бұл х,у нүктесінен бастап ... ... ... ... канваға шығарады.
Тұйық облыстарды бояу.FillRect(const TRect Rect); - канвада Rect төртбұрышын бояйды. Бояу үшін қылқаламның түсі және стилі қолданылды. ... TColor Color; ... ... - х,у ... ... ... х,у ... жататын тұйық облысты Color түске FillStyle стилмен немесе өрнекпен /узор/ бояйды.
Brush - бұл канваның қасиеті болып табылады. ... ... ... ... ... ... ... көрсетеді.
Brush обьектісінің негізгі қасиеттер:
Color - түсін береді;
Style BSSolid - тұтас бояйды;
BSHorizontal - ... ... ... ... ... ... обьектілер немесе компоненттер. Суретті салуға немесе қарауға Image ... ... Form ... PaintBox ... де ... болады. Оларда да Canvas қасиеті бар. Формада сурет ... оның OnPaint ... ... ... сурет салған кезде оның DrawIng қасиеті қолданылады.
Аннимация - бұл кесінді немесе суретті ... ...
C++ ... Windows -тың ... ... қолдануға болады немесе салынғансуреттің оның бөліктерін қозғалту арқылы жылжытуға болады.
Кескінді қозғалысқа келтірудің бірнеше тәсілдері бар:
1. Timer ... ... ... уақытқа байланысты кескінді жылжытуға болады. Мұнда кескін алдын-ала процедура түрінде анықталып алынады. Уақытқа байланысты кескіннің қозғалатын бөлігінің ... ...
2. ... ... ... ... ... Мұнда сурет салушы қаламның түсін өзгертіп отырады.
3. Animate компоненті бар. Win32-де орналасқан.Бұл компонент Windows-тағы стандарт видеоклиптерді формада көрсету үшін ... Бұл ... ... AVI. ... ... Shell 32.dll библеотекасы болады.
2 С++ программалау тілінде графикалық режим функцияларына
2.1 ... ... ... ... ... суретін салу үшін void __fastcall TForm1::FormPaint(TObject *Sender) функциясы қолданылады. Паравоздың суретін салу ... ... ... ... қолданылды: тіктөртбұрыш, эллипс және доға қолданылды.
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject ... = clBlue; // ... ... таңдау
Canvas->Brush->Color = clYellow; // бояудың түсін таңдау
Canvas->Rectangle(330,100,430,270); // паравоздың денесі
Canvas->Pen->Color = clBlack;
Canvas->Brush->Color = clTeal;
Canvas->Rectangle(345,115,415,185);
Canvas->Pen->Color = clFuchsia; // ... ... ... = ... ... = clWhite;
Canvas->Brush->Color = clBlack;
Canvas->Rectangle(250,110,290,185);
Canvas->Pen->Color = clBlack; // контурдың түсін таңдау
Canvas->Brush->Color = ... = clWhite; // ... ... ... = clBlack;
Canvas->Ellipse(240,80,270,95); // паравоздың түтіні
Canvas->Ellipse(280,75,305,95);
Canvas->Ellipse(310,65,338,91);
Canvas->Ellipse(335,65,353,78);
Canvas->Pen->Color = clBlack;
Canvas->Arc(270,240,330,310,0,240,420,260); // паравоздың дөңгелектері
Canvas->Arc(210,240,270,310,0,240,420,260);
Canvas->Arc(150,240,210,310,0,240,420,260); ... ... ... доға ... ... ... тіктөртбұрышты салады, Ellipse х пен у бойынша координаталары, ... ... ... ... ... 2. ... суретін салатын программасының нәтижесі
2.2 Тіктөртбұрыш пен эллипсті түрлі тәсілдермен бейнелеу және қылқаламдарды қолдану
C++Builder ортасында тіктөртбұрыш пен эллипстің суретін салатын программаны құру үшін ... ... ... ... жүзеге асырылды. Суретті салуда қылқаламдардың бірнеше түрлері қолданылды.
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void ... ... ... ... түсі ... ... ені ... Қаламныі стилі - пунктир
Canvas->Pen->Style=psDot;
// Қаламның түсіне сәйкес
// және ... ... ... ... ... мүмкіндіктерімен алмастырады) тұйық фигураны шығару стилі
// Мұнда мөлдір фон
Canvas->Pen->Mode=pmCopy;
// Тіктөртбұрышты нүктелері бойынша салады
Canvas->Rectangle(0,0,100,100);
// Мұнда GDI мөлдір емес фонның аналогы
Canvas->Pen->Mode=pmWhite;
// ... ... ... ... CreatePen() функциясымен қалам құрылады 1 - қаламның қалыңдығы
HPEN hPen=CreatePen(PS_DASHDOTDOT,1,RGB(255,0,0));
// ... ... ... ... ... ... өзгереді
Canvas->Pen->Mode=pmCopy;
// Қылқалам стилі - тігінен штрихтау
Canvas->Brush->Style=bsVertical;
// Мөлдірлікті мынадай тәсілмен де анықтауға ... ... ... ... салынады
Canvas->RoundRect(100,100,200,200,50,50);
// Координаталарын былайша беруге болады
TRect tRect; // ... ... // Сол ... // Оң жақ
tRect.Top=250; // ... // ... ... бояу үшін қылқалам қолданылады
Canvas->Brush->Color=(TColor)RGB(0,0,255);
Canvas->Rectangle(tRect);
Canvas->Brush->Color=(TColor)RGB(0,255,255);
// Қылқаламның стилі
Canvas->Brush->Style=bsCross;
// Немесе координаталары бойынша
Canvas->RoundRect(100,300,250,450,50,50);
}
//---------------------------------------------------------------------------
Сурет 3. Тіктөртбұрыш пен эллипсті түрлі тәсілдермен бейнелеу
2.3 ... ... ... ... ... салу үшін оның ... ... қызыл, ал жоғарғы бөлігі сары болуы керек. Кеменің ... салу ... ... ... stdio.h, conio.h библеотекалары қолданылады.
#include
#include
#include
#include
int main(void)
{int gdriver = DETECT, gmode;
int i, maxx, ... ... ... ... Корпустың координаталарының массиві
int poly1[8]={70,100,
170,100,140,130,100,130};initgraph(&gdriver, &gmode, "");
maxx = getmaxx();
maxy = getmaxy();
// Палубаның суретін салу
setfillstyle(1, 14);
fillpoly(9, poly);
//Корпус ... ... ... ... ... С++ ... ... мәтіндерді шығару
С++ программалау тілінде мәтіндерді шығару үшін outtext(char *text) ... ... ... ... ... шығарылатын жазба жазылады. Егер жазбаны қажетті орынға жазу қажеттігі туындаса, outtextxy(int x, int y, char *text) функциясы қолданылады. Бұл мәтіндік ... ... ... қолданғандай, мәтінді экранға оңай шығаруға мүмкіндік береді.
Орыс қарпін ауыстыру үшін экранның берілуін өзгерту керек. Қаріптер BGI папкасында орналасады және **.chr ... ... ... ... ... қаріпін өзгерту үшін settextstyle() функциясы қолданылады.
#include
#include
#include
#include
//массив шрифтов
char *fname[] = { "DEFAULT ... ... ... SERIF ... font"
};
int main(void)
{
int gdriver = 9, gmode=0;
int style, midx, midy;
int size = 1; //қаріп өлшемі
initgraph(&gdriver, &gmode, ""); //Егер драйвер ағымдағы папкада ... бос ... ... = getmaxx() / 2; // Экранның ортасы есептеледі
midy = getmaxy() / ... ... //х және у ... ... ... ... қаріптерді айналдырғаннан кейін экранға шығару керек
for (style=DEFAULT_FONT; styleHandle);
MoveToEx(hdc, 0, 0, NULL);
LineTo(hdc, 100, 200);
Form1 формасының терезесіне (0,0) мен (100,200) нүктелерін ... қима ... ...
Құрылғының контексті графикалық обьектілерді API функциясының көмегімен шығаруға арналған. Ол тек экран дисплейіндегі терезе үшін ғана ... ... қоса ... ... графикалық функциялардың көмегімен файлға жазылатын, принтер мен метафайл үшін де анықтауға болады. ... ... үшін Form1 ... терезесіне Button компонентін орналастырып, кодты жазса жеткілікті. Программаның нәтижесінде бесбұрыштың ішіне А символы толтырылған сурет шығады.
Программаның орындалуы:
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include ... ... resource ... *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HBITMAP hBitmap;
TColor ... ... ... 0, 300, 100, 250, 300, 150, 300, 100, ... i, ... hbrush;
HDC hdcmem, hdc= GetDC(Handle);
hdcmem= CreateCompatibleDC(hdc);
hBitmap= CreateCompatibleBitmap(hdc, 8,8);
SelectObject(hdcmem, hBitmap);
for (i=0; i

Пән: Информатика
Жұмыс түрі: Курстық жұмыс
Көлемі: 21 бет
Бұл жұмыстың бағасы: 2 500 теңге









Ұқсас жұмыстар
Тақырыб Бет саны
Delphi-де бағдарламалау52 бет
Excel бағдарламасы13 бет
Graph кітапханасын қолдану21 бет
Windows жүйесіндегі жұмыс істеу негіздері24 бет
Граф тиімділік есептерін шешу әдістерінің алгоритмдері мен программалары42 бет
Математикалық есептеулерге арналған программалық жүйелер39 бет
Орта мектептегі паскаль тілі программасын оқытудың әдістемелік ерекшеліктері61 бет
Оқу-әдістемелік кешен149 бет
Принципиалды-электрлік сұлбалар5 бет
Санды табу11 бет


Исходниктер
Пәндер
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить


Зарабатывайте вместе с нами

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Сіз үшін аптасына 5 күн жұмыс істейміз.
Жұмыс уақыты 09:00 - 18:00

Мы работаем для Вас 5 дней в неделю.
Время работы 09:00 - 18:00

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь