3.38Ранг ва стилни урнатиш
SetFillStyle, SetFillPattern, FloodFill, SetAspectRatio
Фойдаланувчини кулайлиги учун GRAPH модулига графика фигураларини ташки ва ички областларини тулдириш учун , бутун бир белги - тулдирувчилар камбинацияси урнатилган. Уларни маскалар деб атаймиз. Маска -ранг комбинациясини тулдириш стили деб кабул килинган.
Олдиндан аникланган стиллар билан ишлаш учун руйхатлари 13.17 таб.да келтирилган GetFillSettings ва SetFillStyle функцияларидан фойдаланамиз. Уларни куриб чикамиз:
SetFillStyle (Pattern: word; Color: word)
Бу ерда Pattern маскани ва уни ранги Color ни урнатади.
Кейинги мисолда EGA/VGA адаптери учун 16-хил рангли политра ишлатилган.
SetFillStyle(SlashFill,Yellow);
Bar(10,10,50,150); { устун маска билан тулдирилган. // сарик ранг }
Табл. 13.17. Тулдиришнинг стандарт стиллари.
Константа
|
Киймат
|
Маска
|
EmptyFill
|
0
|
Фон ранги билан тулдириш
|
SolidFill
|
1
|
Жорий ранг блан тулдириш
|
LineFill
|
2
|
- - белгилар билан тулдириш
|
LtslashFill
|
3
|
// нормал калинликдаги белгилар билан тулдириш
|
SlashFill
|
4
|
// иккиланган калинлидаги белгилар билан тулдириш
|
BkslashFill
|
5
|
// иккиланган калинлидаги белгилар билан тулдириш
|
LtbkSlashFill
|
6
|
// нормал калинликдаги белгилар билан тулдириш
|
HatchFill
|
7
|
Ингичка чизикли вертикаль-горизонталь (узук –узук) штриховкалар билан тулдириш
|
XhatchFill
|
8
|
Кесишган (узук –узук) штриховкали "хар замонда" ингичка чизик билан диогонал буйича тулдириш.
|
InterLeaveFill
|
9
|
Кесишган (узук –узук) штриховкали "тез-тез" ингичка чизик билан диогонал буйича тулдириш.
|
WideDotFill
|
10
|
"хар замонда" нукталар билан тулдириш
|
CloseDotFill
|
11
|
"тез-тез" нукталар билан тулдириш
|
UserFill
|
12
|
Фойдаланувчи томонидан аникланган тулдириш маскаси билан тулдириш.
|
Маска коди ва ранги хакидаги ахборотни GetFillSettings (VAR Inf: FillSettingsType) процедураси ердамида олиш мумкин.
Кайтарилган ахборот Inf узгарувчисида булади ва куйидаги типга эга.
TYPE
FillSettingsType = RECORD
Pattern : word;
Color : word
END;
Мисол урнатилган маска ва унинг ранги хакидаги олиб ташлаш:
PROGRAM DemoGetFillSetting;
USES Crt, Graph;
VAR
DriverVar, ModeVar: integer;
Inf: FillSettingsType;
BEGIN
DriverVar:=detect;
InitGraph(DriverVar,ModeVar,'');
GetFillSettings(Inf);
CloseGraph;
WITH Inf DO BEGIN
Writeln('Mаска =', Pattern);
Writeln('Цвет =', Color)
END
END.
Охирги урнатилган FloodFill процедурасини куриб чикамиз. Бу процедура SetFillStyle ва SetFillPattern ердамида шаклни ички ва ташки областларини тулдириш учун хизмат килади в куйидагича езилади:
FloodFill (X, Y: integer; Border: word)
Б уерда X, Y -шаклнинг ички ва ташки нукта кординаталари,
Border - ранг. Иккинчи параметр Border ранги билан чегараланган областни тулдириш учун кулланилади. (X,Y) нукталар епик областда булса, у холда областнинг ичи тулдирилади, акси холда унинг ташки кисми тулдирилади.
Графика режимида хар бир драйвер учун у билан богланган сикиш еки пропорционаллик (aspect ratio). коэффиценти мавжуд.
Turbo-Pascal графика системаси фойдаланувчига сикилиш коэффицентини корректировка килиш имкониятини беради. Агар у 1 тенг булса, у холда ей айлана ва шунга ухшаш муракаб шакллар экаранда геометрик коррект холда пайдо булади. Сикилиш коэффицентининг бошка кийматларида, масалан айланани чикариш урнига элипис олинади. Купчилик холларда сикилиш коэффицентини фойдаланувчининг узи танлашига туги келади. Бунинг учун махсус GetAspectRatio и SetAspectRatio. процедурасидан фойдаланилади.
GetAspectRatio (VAR xAsp, yAsp: word) процедура пикселнинг иккита кийматини кайтаради. Пикселнинг yAsp вертикал улчови буйича хар доим 10000 минг киймат кайтарилади. Пикселнинг xAsp, улчови буйича 10000 дан кам булга киймат кайтарилади.
Сикилиш коэффицентини SetAspectRatio(xAsp, yAsp: word) воситасида узгартирилади. У сикилиш коэффицентини янги кийматини урнатади ва тугри бурчак, ей, айлана ва элиписларни экранга чикаришда кулланилади.
xAsp аргументи экран пикселининг кенглигини yAsp эса, пиксел баландлигини курсатади. Масалан, Агарда экрандаги пиксел баландлиги кенглигига нисбатан 1,2 марта куп булса, геометрик коррект чикариш куйидаги берилган сикилиш коэффицентлари буйича олинади:
SetAspectRatio(100, 120);
Бу функция графика ахборотларини стандарт булмаган маниторлар учун карректировка килиб беради.
Назорат саволлари
1.Кандай драйверларга графика драйверлари дейилади?
Стандарт драйверлар нима?
Фойдаланувчининг драйвери кандай драйверлар?
Видеорежим нима ?
Драйвер типлари нималар оркали берилади?
Видеорежимни инициализациялаш кандай бажарилади ?
Ранг ва палитра кандай урнатилади?
SetPalette ва SetAllPalette нинг вазифаси нима?
Жорий палитра хакидаги ахборот кандай олинади?
График фигуралар кандай курилади?
Айлана, эллипс ва х.з.лар кайси процедура ердамида чизилади?
Маска нима?
Do'stlaringiz bilan baham: |