§ 14. Інтэрактыўная графіка
Сайт: | Профильное обучение |
Курс: | Інфарматыка. 11 клас (Павышаны ўзровень) |
Книга: | § 14. Інтэрактыўная графіка |
Напечатано:: | Гость |
Дата: | Суббота, 19 Апрель 2025, 12:38 |
14.1. Паняцце аб інтэрактыўнай графіцы
У залежнасці ад ступені ўзаемадзеяння карыстальніка з камп'ютарам пры пабудове малюнка, камп'ютарная графіка падзяляецца на два асноўных класа: пасіўную (пакетную) і інтэрактыўную камп'ютарную графіку. Пры пасіўнай графіцы камп'ютар выводзіць на экран папярэдне падрыхтаваны малюнак, і карыстальнік не можа непасрэдна кіраваць малюнкам да таго часу, пакуль ён не з'явіцца на экране. Малюнак можа быць як простым (напрыклад, графік функцыі на зададзеным прамежку), так і вельмі складаным (напрыклад, візуалізацыя вынікаў мадэлявання працэсу палёту касмічнага карабля). Пры інтэрактыўнай камп'ютарнай графіцы мяркуецца магчымасць працы з малюнкам у форме дыялогу ў рэжыме рэальнага часу. Пры гэтым карыстальнік можа ўносіць змены ў малюнак непасрэдна ў працэсе яго прайгравання. Напрыклад, пабудова графіка функцыі можа адбывацца ў інтэрактыўным рэжыме, калі ў карыстальніка ёсць магчымасць задаваць межы прамежку, мяняць каэфіцыенты ва ўраўненні або змяняць функцыю (прыклад 14.1). Пры стварэнні інтэрактыўнай графікі карыстальнік можа выконваць наступныя дзеянні:
Дыялог звычайна здзяйсняецца ў выглядзе ўводу або выбару каманд, якія змяшчаюць лікавыя значэння, імёны, каардынаты, адвольны тэкст і т. п. У асяроддзі CBuilder выбар каманд можна здзяйсняць з дапамогай элементаў кіравання: кнопак, тэкставых палёў, пераключальнікаў і г. д. |
Прыклад 14.1. Пасіўная графіка — графік функцыі y = x2sin(x) на прамежку Інтэрактыўнае кіраванне працэсам пабудовы графіка функцыі[1]: Вынік: Прыкладам інтэрактыўнай графікі з'яўляецца праект[1] «Набярыце Месяц (Dial A Moon)», дзе можна ўказаць дату і час і ўбачыць, у якой фазе знаходзіцца месяц. Падборка цікавых праектаў інтэрактыўнай графікі сабрана на сайце «Прафесійны канструктар лэндынгаў для бізнесу».[2] (Лэндынг — аўтаномная інтэрнэт-старонка, на якую патэнцыйны кліент трапляе пасля кліку па рэкламнай аб'яве або ў выніку пошуку). Паводле даследаванняў, чалавек запамінае каля 10% інфармацыі, якую чуе, 20% ад прачытанага. Людзі запамінаюць каля 80% таго, што бачаць і робяць. У гэтым выпадку аб'ядноўваюцца два канала ўспрымання інфармацыі: візуальны і кінэстэтычны (адчуванні становішча і руху органаў цела). Інтэрактыўная інфаграфіка прымушае чалавека здзяйсняць якія-небудзь мэтанакіраваныя дзеянні падчас чытання, што значна палягчае перадачу і засваенне інфармацыі. |
14.2. Пабудова малюнка ў залежнасці ад памеру і становішча
Прыклад 14.2. Стварыць праект, у якім будзе будавацца малюнак «сердечка». Карыстальнік задае вышыню і шырыню малюнка. Месцазнаходжанне малюнка будзе вызначацца клікам мышы (у пункце, дзе клікнулі, павінен размяшчацца цэнтр малюнка). Калі малюнак цалкам не змяшчаецца ў вобласці малявання, то варта вывесці адпаведнае паведамленне. Этапы выканання задання
Прыклад 14.3. Стварыць праект, у якім можна будзе выбіраць, як размяшчаць «сердечки»: а) адно «сердечко» у выпадковым месцы Image; Выбар неабходна здзяйсняць з дапамогай адпаведных кнопак. Этапы выканання задання
|
Прыклад 14.2. Даданне метаду heart у загалоўкавы файл формы: Разлік элементаў малюнка: Значэнні ўводзяцца карыстальнікам, значэнне d = w/2. Значэнні x0, y0 вызначаюцца клікам мышы, астатнія каардынаты вылічаюцца па наступных формулах: x1 = x0 – w/2; y1 = y0 – h/2; Апрацоўшчык падзеі OnMouseDown і функцыя малявання:
Дадатак у час працы: Прыклад 14.3. Апрацоўшчыкі падзей для кнопак:
Дадатак у час працы: |
14.3. Бітавыя вобразы
Пры працы з графікай зручна выкарыстоўваць бітавыя вобразы (бітавыя матрыцы). Бітавы вобраз уяўляе сабой графічную паверхню, якая знаходзіцца ў памяці камп'ютара, на якой можна пабудаваць малюнак. Змесціва бітавага вобраза (малюнак) можа быць выведзена на канву. Сфармаваць бітавы вобраз можна шляхам загрузкі з bmp-файла або шляхам капіравання фрагмента з іншага бітавага вобраза, у тым ліку і з паверхні кампанента Image. У праграме бітавы вобраз — гэта аб'ект тыпу TBitmap. Клас TBitmap, вызначаны ў CBuilder як Graphic:: TBitmap. Гэты клас падтрымлівае як растравыя малюнкі ў выглядзе масіва пікселяў, так і малюнкі ў фармаце BMP. Некаторыя ўласцівасці і метады аб'екта TBitmap прыведзены ў прыкладзе 14.4. Апісанне бітавай матрыцы з імем Pict здзяйсняецца наступным чынам: Graphics::TBitmap *Pict = new Graphics::TBitmap(); — паказальнік на месца ў памяці, дзе будзе размешчаны аб'ект, які захоўвае малюнак. Для вываду бітавага вобраза на канву можна скарыстацца метадам Draw (х, y, Pict). Параметры x, y вызначаюць месцазнаходжанне верхняга левага вугла малюнка, які захоўваецца ў пераменнай Pict (аб'ект тыпу TBitmap). Прыклад 14.5. Стварыць праект, у якім па кліку мышы па-над фонавым малюнкам лесу неабходна намаляваць карцінкі звяроў, якія захоўваюцца ў файлах. Для карэктнай працы ўсе малюнкі павінны быць у BMP фармаце. Малюнкі варта захаваць у папцы Win32\Debug. Малюнкі, на якіх намаляваныя звяры, павінны мець аднастайны фон[1]. Этапы выканання задання
3.1. Стварыць аб'ект Pict для захоўвання бітавага вобраза; Бітавыя вобразы могуць выкарыстоўвацца для залівання фігур, намаляваных на канве. Для гэтага ўласцівасці Brush -> Bitmap трэба прысвоіць значэнне бітавага вобраза. Image1->Canvas->Brush->Bitmap = Pict; Пасля гэтай каманды ўсе фігуры, для якіх вызначаны пэндзаль, будуць заліты растравым малюнкам, які захоўваецца ў бітавым вобразе Pict. Калі памеры бітавага ладу менш, чым вобласць заліўкі, то вобласць залівання замяшчаецца малюнкамі, якія захоўваюцца ў бітавай матрыцы. Калі вобласць заліўкі менш, то будзе бачная толькі частка малюнка (прыклад 14.6). Калі пасля заліўкі растравым малюнкам патрабуецца зноў вярнуцца да заліўкі колерам, то бітавы вобраз павінен быць выдалены з уласцівасці пэндзля. Для гэтага можна скарыстацца камандай: Image1->Canvas->Brush->Bitmap = NULL; [1] Пры неабходнасці малюнак трэба папярэдне апрацаваць ў графічным рэдактары. |
Выкарыстанне бітавых вобразаў дазваляе маляваць на нябачных віртуальных паверхнях — у літаральным сэнсе ў аператыўнай памяці. Пры вывадзе графічнай інфармацыі атрымоўваецца пазбегнуць эфекту мігцення, які ўзнікае пры непасрэднай мадыфікацыі знешняга выгляду элементаў кіравання на форме. Асноўная перавага выкарыстання бітавых вобразаў — скорасць апрацоўкі і вываду малюнкаў. Прыклад 14.4. Некаторыя ўласцівасці аб'екта TBitmap.
Некаторыя метады аб'екта TBitmap. Метад Assign капіруе малюнак з іншага графічнага аб'екта. Метады LoadFromFile і SaveToFile выкарыстоўваюцца для чытання малюнка з файла і запісу яго ў файл. Прыклад 14.5. Форма на этапе канструявання: Апрацоўшчык падзеі OnCreat.
Апрацоўшчык падзеі OnMouseDown.
Дадатак у час працы: Прыклад 14.6. Заліўка з выкарыстаннем бітавых вобразаў: Код апрацоўшчыка націску кнопкі «Эллипс» (для прамавугольніка аналагічна):
Канстанта NULL, мае значэнне «ничего». Фармальна — гэта значэнне паказальніка, які не спасылаецца ні на які аб'ект. |
Пытанні да параграфа
![]() |
1. Што разумеюць пад інтэрактыўнай графікай? 2. Якімі параметрамі інтэрактыўнага малюнка карыстальнік можа кіраваць? 3. Якім чынам карыстальнік можа кіраваць інтэрактыўным малюнкам? 4. Што разумеюць пад бітавымі вобразамі? 5. Як апісаць бітавы вобраз? 6. Як выкарыстоўваць бітавы вобраз для заліўкі фігур? |
Практыкаванні
1. Дадайце ў праект з прыкладу 14.2. пералічаныя магчымасці:
- Выбар колеру для малявання «сердечка».
- Кнопку «Очистка», якая будзе чысціць вобласць малявання (намаляваць прамавугольнік белага колеру, які супадае па памерах з кампанентам Image).
2. Пабудуйце наступныя малюнкі ў залежнасці ад даных, уведзеных карыстальнікам. Для кожнага малюнка зрабіце праверку таго, што яно змесціцца ў вобласць малявання.
- Намаляваць на экране квадрат, з бакамі паралельнымі бакам экрана. Даўжыня боку квадрата ўводзіцца, месцазнаходжанне верхняга левага вугла вызначаецца клікам мышы.
- Намаляваць на экране прамавугольную трапецыю. Даўжыні асноў, вышыні і каардынаты верхняга левага вугла трапецыі ўводзяцца. (Трапецыю размясціць так, каб яе асновы былі раўналежныя адной з бакоў экрана.)
- Намаляваць на экране два квадрата, з бакамі паралельнымі бакам экрана. Адзін з квадратаў ляжыць у іншым, так што квадраты маюць агульны цэнтр (пункт перасячэння дыяганалей). Даўжыні бакоў квадратаў уводзяцца, цэнтр квадрата вызначаецца клікам мышы.
- Намаляваць на экране ромб. Даўжыні дыяганалей ромба ўводзяцца, каардынаты пункту перасячэння дыяганалей вызначаюцца клікам мышы. (Ромб размясціць так, каб яго дыяганалі былі раўналежныя бакам экрана.)
- Намаляваць на экране квадрат, з бакамі паралельнымі бакам экрана. Даўжыня боку квадрата і каардынаты верхняга левага вугла ўводзяцца. Апісаць акружнасць вакол квадрата.
- Намаляваць на экране трохвугольнік, які зададзены каардынатамі сваіх вяршынь. Правесці медыяны трохвугольніка. Пункт перасячэння медыян вылучыць кантрасным колерам. (Пабудаваць круг радыусу 3.)
3. Дадайце ў праект з прыкладу 14.3. наступны:
- Выбар колеру і памеру для малявання «сердечка».
- Кампанент CheckBox, з дапамогай якога можна вызначыць, што колер будзе задавацца выпадковым чынам.
- Кампаненты CheckBox, з дапамогай якіх можна выбіраць уздоўж якой мяжы Image (злева, справа, зверху, знізу, па дыяганалі) маляваць «сердечки».
4. Змяніце праект прыкладу з 14.3 так, каб маляваліся не «сердечки», а наступныя фігуркі. Прадумайце кіраванне вываду малюнка на экран.
- квадрацікі;
- роўнастаронні трохвугольнікі;
- грыбочкі:
- пірамідкі:
- флажкі:
- прапануйце свае фігуркі.
5. Дадайце магчымасць заліўкі хаты растравым малюнкам (змяніць праект з прыкладу 13.8).
Прыкладны выгляд формы |
Клік мышшу па малюнку, калі CheckBox не актыўны |
Клік мышшу па малюнку, калі CheckBox актыўны |
Вынік зафарбоўкі |