3. Графикалық файлдардың форматтары
Растрлік бейнелердің форматтары:
.bmp – Windows – тің ең кең таралған растрлық бейне форматы. Бұл файлдар сығылмаған сондықтан көлемі үлкен болады.
Интернетте веб-беттерде растрлық 2- формат кең таралған.
GIF – бұл формат мөлдір пикселдерді және анимацияны сақтауға мүмкін береді. Бұл форматта файлдар ақпараттарды толық сақтап, сығылған.
JPEC – файлдың кеңейтілуі .jpg . Бұл формат файлдың сығылу дәрежесін яғни, ақпарат жоғалу процентін көрсетуге мүмкіндік береді. Жоғалу проценті неғұрлым көп болса, солғұрлым файлдың көлемі кіші болады. 50% жоғалумен фотосуреттер интернетте қанағаттаңарлық түрде болады.
Тақырып: DELPHI-ДІҢ ГРАФИКАЛЫҚ МҮМКІНДІКТЕРІ
Жоспар
Холст
Canvas объектісі
Қарындаш және қылқалам
Мәтінді шығару
Графикалық примитивтерді салу әдістері
Биттік бейнелер
Мультипликация
Базалық нүкте әдісі
Суреттерді шығару. IMAGE компоненті
Shape компоненті
Холст
Windows қосымшалары экранға немесе принтерге графикалық бейнелерді шығаруды GDI (Grafics Devices Interface) функциялары көмегімен жүзеге асырады.
Қосымшаның құрылғы драйверімен әрекеттестігі GDI функциялары қолданатын бейненің контексті деп аталатын арнайы берілгендер құрылымы арқылы жүзеге асады. Бейненің контексті шығару құрылғысының негізгі сипаттамаларынан және сурет салу саймандарынан тұрады. Бейненің контекстіне келесі саймандар жатады: шрифт, қалам (перо), қылқалам (кисть).
Delphi қасиеті программистке экранға графикалық бейнелерді шығаратын программаларды жасауға мүмкіндік береді.
Delphi ортасында графикалық құралдарды қолдануды жеңілдету үшін арнайы класстар бар. Олар:
TCanvas – бейненің контексті үшін
TFont – шрифт үшін
Tpen – қалам үшін
Tbrush – қылқалам үшін
TPicture – бейнелер үшін контейнер
TGraphic – графикалық объектілер үшін базалық класс
TBitmap – растрлік бейне
TIcon – шартбелгі (значок)
TMetaFile – метафайл
Осы кластарға байланысты объектілер барлық көрінетін элементтер үшін автоматты түрде құрылып, программада - canvas, font, pen және brush қасиеттері арқылы жүзеге асырылады.
Tcanvas класы әртүрлі құралдармен – қалам, қылқалам, шрифт – сурет салынатын кенепті құруға мүмкіндік береді. Tcanvas класының объектілері барлық көрінетін компонентер үшін автоматты түрде құрылады.
Tfont класының көмегімен кез келген графикалық құрылғы (экран, принтер, плоттер, және т.б.) үшін шрифт объектісі құрылады.
Tpen класының көмегімен сызықтарды сызуға арналған қалам объектісі құрылады.
Tbrush класының объектілер тұйық фигуралардың ішін толтыру қызметін атқарады.
2. Canvas объектісі
Программа графиканы объектінің (форма немесе Image компоненті) бетіне шығарады. Объектінің бетіне Сanvas қасиеті сәйкес келеді. Программа графиканы шығаратын беттерге Canvas қасиеті сәйкес. Canvas қасиеті—Tcanvas типті объект болады. Бұл типтің әдістері графикалық примитивтерді (нүктелерді, сызықтарды, шеңберлерді, тіктөртбұрыштарды және т.б.) шығаруды қамтамасыз етеді, ал қасиеттері шығарылатын графикалық примитивтердің сипаттамаларын: сызықтардың түсін, қалыңдығын және стилін, боялатын аймақтардың түсін және құю түрін, мәтіндік ақпарат шығарғандағы қаріптің сипаттамаларын анықтауға мүмкіндік береді.
Графикалық примитивтерді салу әдістері Canvas қасиетін сурет салуға болатын кейбір абстрактты холст деп қарастырады (canvas "бет", "сурет салу үшін арналған холст" деп аударылады). Холст жеке нүктелерден – пикселдерден – тұрады. Пикселдің орны оның көлденең (X) және тік (Y) координаталарымен анықталады. Жоғарғы сол жақтағы пикселдің координаталары (0, 0). Координаталар жоғарыдан төменге және солдан оңға қарай өзгереді. Холсттың оң жақ төменгі координаталар мәні холст көлеміне байланысты болады.
Холсттың көлемін бейне шығарылатын аймақтық (image) Height және width қасиеттері немесе форманың ClientHeight және Clientwidth қасиеттері арқылы анықтауға болады.
3. Қарындаш және қылқалам
Суретші өз жұмысында қарындаш пен қылқаламды қолданады. Холст бетінде графикалық примитивтерді салуды қамтамасыз ететін әдістер де қарындаш пен қылқаламды қолданады.
Холстта графиканы шығару үшін қолданылатын қарындаш және қылқаламға Реn (қалам) және Brush (қылқалам) қасиеттері сәйкес. Олар сәйкесінше TРеn және Tbrush типті объектілер болады. Бұл объектілер қасиеттерінің мәндері шығарылатын графикалық элементтердің түрін анықтайды.
Қарындаш. Қарындаш геометриялық фигуралардың (тіктөртбұрыш, шеңбер, эллипс, доға және т.б.) нүктелерін, сызықтарын және контурларын сызу үшін қолданылады. TРеn объектісінің қасиеттері 1 кестеде келтірілген.
1 кесте. TРеn объектісінің қасиеттері
Қасиет
|
Сипаттамасы
|
Color
|
Сызықтың түсі
|
Width
|
Сызықтың қалыңдығы
|
Style
|
Сызықтың түрі
|
Mode
|
Көрсету режимі
|
Color қасиеті қалам мен салынған сызықтың түсін анықтайды. Келесі кестеде Color қасиетінің мәні ретінде пайдалануға болатын белгілі тұрақтылар берілген.
2 кесте. Color қасиетінің мәндері
Тұрақты__Түсі__Тұрақты__Түсі'>Тұрақты
|
Түсі
|
Тұрақты
|
Түсі
|
ClBlack
|
Қара
|
ClSilver
|
Күміс
|
ClMaroon
|
Каштан
|
ClRed
|
Қызыл
|
ClGreen
|
Жасыл
|
Clime
|
Салатты
|
ClOlive
|
Олив
|
ClBlue
|
Көк
|
ClNavy
|
Шымқай көк
|
ClFutshia
|
Ашық қызғылт
|
ClPurple
|
Қызғылт
|
ClAqua
|
Бирюзалы
|
ClTeal
|
Жасыл-көкшіл
|
ClWhite
|
Ақ
|
ClGray
|
Сұр
|
|
|
width қасиеті сызықтың қалыңдығын (пикселде) анықтайды. Мысалы, Canvas. Pen. width: =2 инструкциясы сызықтың қалыңдығы 2 пиксел деп орнатады.
style қасиеті сызықтың түрін (стилін) анықтайды. Сызық үздіксіз немесе штрихті бола алады. Пунктирлі сызықтың қалыңдығы 1 ден үлкен бола алмайды. Егер Pen.width қасиетінің мәні 1 ден үлкен болса, онда үздіксіз сызық салынады. 3 кестеде сызықтың стилін анықтайтын тұрақтылар келтірілген.
3 кесте. Style қасиетінің мәндері
Тұрақты__Сызық_түсі'>Тұрақты
|
Сызық түрі
|
psSolid
|
Үздіксіз сызық
|
psDash
|
Пунктирлі сызық, ұзын штрихтар
|
psDot
|
Пунктирлі сызық, қысқа штрихтар
|
psDashDot
|
Пунктирлі сызық, ұзын және қысқа штрихтар кезектеседі
|
psDashDotDot
|
Пунктирлі сызық, бір ұзын және екі қысқа штрихтар кезектеседі
|
psClear
|
Сызық көрінбейді (аймақтық шекарасын жасыру қажет болғанда қолданылады)
|
Mode қасиеті сызықтың нүктелер түсін холст нүктелер түсіне байланысты анықтайды. Үнсіз келісім бойынша сызық Pen.Color қасиетінің мәні болатын түспен сызылады.
Бірақ, программист фон түсіне байланысты сызық түсін өзгерте алады. Төменгі кестеде Рen.Mode қасиетінің мәні ретінде қолданылатын тұрақтылар сипатталған.
Тұрақты
|
Сызық түсі
|
MpBlack
|
Қара, Рen.Color қасиетінің мәнінен тәуелсіз
|
MpWhite
|
Ақ , Рen.Color қасиетінің мәнінен тәуелсіз
|
MpCopy
|
Сызық түсі Рen.Color қасиетінің мәніне тәуелді
|
MpNotCopy
|
Сызық түсі Рen.Color қасиетінің мәніне инверсиялы
|
MpNot
|
Сызық түсі бет нүктелерінің түсіне инверсиялы
|
Қылқалам. Қылқалам (canvas.Brush) — контурмен шектелген аймақтарды бояу үшін қолданылады. Объект болғандықтан, қылқаламның 4 кестеде көрсетілгендей қасиеттері бар.
4 кесте . TBrush (қылқалам) объектісінің қасиеттері
Қасиет
|
Сипаттамасы
|
Color
Style
|
Тұйық аймақты бояу (құю) түсі
Аймақты құю стилі (типі)
|
Аймақты құю стилін анықтайтын Brush. style қасиетінің мәндері 5 кестеде келтірілген.
5 кесте. style қасиетінің мәндері
Тұрақты
|
Аймақты құю түрі
|
bsSolid
|
Бірыңғай құю
|
bsClear
|
Аймақ боялмайды
|
bsHorizontal
|
Көлденең штриховка
|
bsVertical
|
Тік штриховка
|
bsFDiagonal
|
Диагональды штриховка, сызықтар солға көлбеу
|
bsBDiagonal
|
Диагональды штриховка, сызықтар оңға көлбеу
|
bsCross
|
Көлденң-тік штриховка, торлы
|
bsDiagCross
|
Диагональдыная штриховка, торлы
|
1 сурет. Аймақты құю стильдері
4. Мәтінді шығару
Графикалық объектінің бетіне мәтінді шығару үшін TextOut әдісі қолданылады:
Объект.Canvas.TextOut(x, у, мәтін)
мұндағы:
объект — бетіне мәтін шығарылатын объектінің атауы;
х, у — мәтін шығарылуы басталатын графикалық бет нүктесінің координатасы;
мәтін — мәні шығарылатын мәтінді анықтайтын айнымалы немесе символдық типты тұрақты
Мәтінді шығару үшін қолданылатын қаріп сәйкес canvas объектісінің Font қасиетінің мәнімен анықталады. Font қасиеті TFont типті объект болады. Мәтінді шығару үшін TextOut әдісі қолданатын қаріптің сипаттамаларын орнататын TFont объектісінің қасиеттері 6 кестеде келтірілген.
6 кесте. Tfont объектісінің қасиеттері
Қасиет
|
Сипаттамасы
|
Name
|
Қолданылатын қаріп. Мәні ретінде қаріптің атауын көрсету қажет, мысалы, Arial
|
Size
|
Пунктпен (points) анықталатын қаріптің өлшемі. Пункт— полиграфияда қолданылатын қаріп өлшемін өлшеу бірлігі. Бір пункт 1/72 дюймге тең
|
Style
|
Символдардың жазылу стилі. Болуы мүмкін: нормальды, қарайтылған, курсив, асты сызылған, сызылған. Стиль келесі тұрақтылармен анықталады:
fsBold (қарайтылған)
fsltalic (курсив)
fsUnderline (асты сызылған)
fsStrikeOut (сызылған).
style қасиеті керекті стильдерді бірге қолдануға мүмкіндік беретін жиын болады. Мысалы, "қарайтылған курсив" стилін орнату үшін программа инструкциясы келесідей болады:
Объект. Canvas . Font : = [fsBold, fs Italic]
|
Color
|
Символдар түсі. Мәні ретінде Tcolor типті тұрақтыны қолдануға болады.
|
Ескерту!
Мәтінді шығару аймағы қылқаламның ағымдағы түсімен боялады. Сондықтан, мәтінді шығару алдында Brush.Color қасиетіне bsClear немесе мәтін шығарылатын беттің түсіне сәйкес қылқалам түсінің мәнін меншіктеу қажет.
Textout әдісімен мәтін шығарылған соң шығару нұсқағышы (қарындаш) мәтінді шығару аймағының жоғарғы оң жақ бұрышына орналасады.
Мәтіннің жоғарғы оң жақ бұрышының координаталарын анықтау үшін PenPos қасиетін қолдану керек.
Программаның келесі фрагменті TextOut функциясының қолданылуын көрсетеді.
With Form1.Сanvas do
Begin
Font.Name:=’Tahoma’;
Font.Size:=20;
Font.Style:=[fsItalic,fsBold];
TextOut(10,10’Borland Delphi 7’);
End;
5. Графикалық примитивтерді салу әдістері
Суретші өз жұмысында қарындаш пен қылқаламды қолданады. Холст бетінде графикалық примитивтерді салуды қамтамасыз ететін әдістер де қарындаш пен қылқаламды қолданады.
Холстта графиканы шығару үшін қолданылатын қарындаш және қылқаламға Реn (қалам) және Brush (қылқалам) қасиеттері сәйкес. Олар сәйкесінше TРеn және Tbrush типті объектілер болады. Бұл объектілер қасиеттерінің мәндері шығарылатын графикалық элементтердің түрін анықтайды.
Қарындаш. Қарындаш геометриялық фигуралардың (тіктөртбұрыш, шеңбер, эллипс, доға және т.б.) нүктелерін, сызықтарын және контурларын сызу үшін қолданылады. TРеn объектісінің қасиеттері 1 кестеде келтірілгенқалыңдығы және стилі) Реn объектісі қасиеттерінің мәндерімен анықталады.
Сынық сызық. polyline әдісі сынық сызық сызу үшін қолданылады. Параметр ретінде әдіс TPoint типті массивті алады. Массивтің әр бір элементі х және у өрістері сынық төбелерінің координаталарын сақтайтын жазба болады.
Polyline әдісін тұйық контурларды сызу үшін қолдануға болады. Ол үшін массивтің бірінші және соңғы элементтеріне бір нүктенің координаталары сақталуы тиіс.
Қисық, сызық. PolyBezier әдісі қисық сызық сызады. Әдістің параметрі ретінде Tpoint типті массив алынады. Массивтің әрбір 3*k+1 элементінің х және у өрістері қисық сызық өтетін нүктелердің координаталарын, ал 3*k+2 және 3*(k+1) элементтерінің х және у өрістері қисық сызықтың түрін анықтайтын бақылау нүктелердің координаталарын сақтайтын жазба болады.
Қисық сызық шекарасының түсі, қалыңдығы және стилі Реn қасиетінің мәндерімен анықталады.
Шеңбер және эллипс. Ellipse әдісі параметрлер мәндері байланысты эллипс немесе шеңбер салады. Әдісті шақыру нұсқасының жалпы түрі келесідей болады:
Объект.Canvas.Ellipse(x1,y1, х2,у2)
мұндағы:
объект — сызу жүргізілетін бет объектісінің (компоненттің) атауы;
x1, y1, х2, у2 — эллипс немесе шеңберді шектейтін тіктөртбұрыштың немесе шаршының координаталары.
Эллипс сызығының түсі, қалыңдығы және стилі Реn объектісі қасиеттерінің мәндерімен, ал эллипс ішіндегі аймақты бояу түсі мен стилі — шығару жүргізілетін беттің (canvas) Brush қасиетінің мәндерімен анықталады.
2 сурет. Arc әдісінің доғаны эллипс (шеңбер) бөлігі деп анықтайтын параметрлерінің мәндері
Доға. Доға салу үшін Arc әдісі қолданылады. Әдісті шақыру нұсқасының жалпы түрі келесідей болады:
Объект.Canvas.Arc(x1,y1,х2,у2,х3,у3,х4,у4)
мұндағы:
x1, y1, х2, у2 — сызылатын доға бөлігін анықтайтын эллипстің (шеңбердің) параметрлері;
х3, у3 — доғаның бастапқы нүктесін анықтайтын параметрлер;
х4, у4 — доғаның соңғы нүктесін анықтайтын параметрлер.
Бастапқы (соңғы) нүкте — бұл эллипс шекарасымен эллипс ортасынан координаталары х3 және у3 (х4 және у4) нүктесіне жүргізілген түзумен қиылысу нүктесі. Доға бастапқы нүктеден бастап соңғы нүктеге дейін сағат тілі бағытына қарсы сызылады (2 сурет).
Доға сызылатын сызықтың түсі, қалыңдығы және стилі доға сызылатын беттің Реn қасиетінің мәндерімен анықталады.
Тіктөртбұрыш. Тіктөртбұрыш Rectangle әдісі көмегімен салынады. Әдісті шақыру нұсқасының жалпы түрі келесідей болады:
Объект.Canvas.Rectangle(x1, y1,x2, y2)
мұндағы:
объект — сызу жүргізілетін бет объектісінің (компоненттің) атауы;
x1, y1 және х2, у2 — тіктөртбұрыштың сол жақ жоғарғы және оң жақ төменгі төбелерінің координаталары.
RoundRec әдісі де тіктөртбұрыш салады, тек оның бұрыштары домаланған. RoundRec әдісін шақыру нұсқасы:
Объект.Canvas.RoundRec(x1,y1,х2, у2, х3, у3)
мұндағы:
x1, y1, х2, у2 – бұрыштары домаланған тіктөртбұрышты шектейтін тіктөртбұрыштың сол жақ жоғарғы және оң жақ төменгі төбелерінің координаталары;
х3 және у3 — төрттен бір бөлігі бұрыштары домаланған төртбұрышты сызу үшін қолданылатын эллипстің көлемі (3 сурет).
3 сурет. Бұрыштары домаланған тіктөртбұрыш сызатын RoundRec әдісінің параметрлері
Контурдың түсі, қалыңдығы және стилі Реn объектісі қасиеттерінің мәндерімен, ал тіктөртбұрыш ішіндегі аймақты бояу түсі мен стилі — шығару жүргізілетін беттің (canvas) Brush қасиетінің мәндерімен анықталады.
Тіктөртбұрыш салатын тағы да екі әдіс бар: FillRect әдісі іші боялған тіктөртбұрыш салады, ал FrameRect әдісі — тек контурды салады. Осы әдістердің әр қайсысының тек бір параметрі бар —TRect типті құрылым. TRect құрылымының өрістері тікбұрышты аймақтың координаталарынан тұрады, олар Rect функциясының көмегімен толтырылуы мүмкін.
Көпбұрыш. Polygon әдісі көпбұрыш сызады. Әдістің параметрі ретінде Tpoint типті массив алынады. Массивтің әрбір элементі х және у өрістері көпбұрыш төбелерінің координаталарын сақтайтын жазба болады. Polygon әдісі біртіндеп координаталары массивте сақталған бірінші нүктені екінші нүктемен, екінші нүктені үшінші нүктемен және т.с.с. түзу сызықпен қосады. Сонан соң соңғы және бірінші нүкте қосылады.
Көпбұрыш шекарасының түсі, қалыңдығы және стилі Реn қасиетінің мәндерімен, ал көпбұрыш ішіндегі аймақты бояу түсі мен стилі — шығару жүргізілетін беттің (canvas) Brush қасиетінің мәндерімен анықталады.
Сектор. pie әдісі эллипса немесе дөңгелек секторын салады. Әдісті шақыру нұсқасының жалпы түрі келесідей болады:
Объект. Canvas.Pie(x1,y1,x2,y2,х3,у3,х4,у4)
мұндағы:
x1, y1, х2, у2 — сектор бөлігі болатын эллипсті (шеңберді) анықтайтын параметрлер;
х3, у3, х4, у4 — сектордың шекарасы болатын түзулер ұштарының координаталарын анықтайтын параметрлер.
Түзулердің бастапқы нүктелері эллипс (шеңбер) ортасымен бір. Сектор координаталары (х3, у3) нүктесімен анықталған түзуден бастап координаталары (х4, у4) нүктесімен анықталған түзуге дейін сағат тілі бағытына қарсы салынады.
Нүкте. Программа графика шығара алатын бет Canvas объектісіне сәйкес. TColor типті екіөлшемді массив болатын pixels қасиеті графикалық беттің әрбір нүктесінің түсі туралы ақпаратты сақтайды. Используя қасиет Pixels қасиетін қолданып графикалық беттің кез келген нүктесі үшін керекті түсті орнатуға болады. Мысалы, келесі нұсқа
Form1.Canvas.Pixels[10,10]:=clRed
форма бетінің нүктесін қызыл түске бояйды.
pixels массивінің өлшемі графикалық беттің өлшемімен анықталады.. Форманың графикалық бетінің (жұмыс аймағы, клиенттік деп те атайды) өлшемі Clientwidth және ClientHeight қасиеттерінің мәндерімен, ал image графикалық беттің көлемі —width және Height қасиеттерінің мәндерімен анықталады. Форманың жұмыс аймағының сол жақ жоғарғы нүктесіне pixels [0,0] элементі, ал оң жақ төменгі нүктесіне – Pixels[Ciientwidth - 1, ClientHeight - 1] элементі сәйкес болады.
Pixels қасиетін функциялардың графиктерін салу үшін қолдануға болады.
6. Биттік бейнелер
Графикамен жұмыс істегенде TBitMap (биттік бейне) типті объектілерді қолданған ыңғайлы. Биттік бейне компьютер жадында орналасады да көрінбейтін графикалық бет болады. Биттік бейнені (суретті) жеңіл және жылдам форманың немесе image шығару аймағының бетіне шығаруға болады. Сондықтан, биттік бейнелерді әдетте аз көлемді бейнелерді, мысалы, командалық батырмалар суреттерін, сақтау үшін қолданады.
Биттік бейнеге керекті суретті жүктеу үшін LoadFromFile әдісін қолдануға болады. Әдістің параметрі ретінде керекті сурет сақталған BMP-файлының атауын көрсету қажет.
Биттік бейнені (суретті) форма немесе иллюстрацияны шығару бетіне шығару үшін Draw әдісін беттің сәйкес қасиетіне қолдануға болады. Мысалы, келесі нұсқа
Image1.Canvas.Draw(x,у, bm)
bm биттік бейненің суреттін image1 компонентінің бетіне шығарады (х және у параметрлері компонент бетіндегі суреттің сол жақ жоғарғы бұрышының координаталарын анықтайды).
Достарыңызбен бөлісу: |