§ 14. Інтэрактыўная графіка
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, мае значэнне «ничего». Фармальна — гэта значэнне паказальніка, які не спасылаецца ні на які аб'ект. |