3.35Ранг ва политрани урнатиш
SetPalette, SetAllPalette, GetBkColor, GetColor, GetMaxColor, GetPalette, GetPaletteSize
EGA/VGA-адаптерлари учун EGAVGA.BGI драйвери 54 ранг урнатади .Улардан бир кисми, CGA га тугри келадиганлари 13.16 таб.да курсатилган .
Табл. 13.16. EGA/VGA адаптерлар учун ранглар
Константа
|
Киймат
|
Код
|
Манитор экранидаги ранг
|
Ранглар компонентаси
|
EGABlack
|
0
|
000000
|
Кора
|
......
|
EGABlue
|
1
|
000001
|
Хаво ранг
|
.....B
|
EGAGreen
|
2
|
000010
|
Зангори
|
....G.
|
EGACyan
|
3
|
000011
|
Хаво ранг-зангори
|
....GB
|
EGARed
|
4
|
000100
|
Кизил
|
...R..
|
EGAMagenta
|
5
|
000101
|
Кизил-хаво ранг
|
...R.B
|
EGABrown
|
20
|
010100
|
Жигарранг
|
.g.R.B
|
EGALightGray
|
7
|
000111
|
Оч кул ранг
|
...RGB
|
EGADarkGray
|
56
|
111000
|
Тук кул ранг
|
rgb...
|
EGALightBlue
|
57
|
111001
|
Оч хаво ранг
|
rgb..B
|
EGALightGreen
|
58
|
111010
|
Оч -зангори
|
rgb.G.
|
EGALightCyan
|
59
|
111011
|
Оч- хаво- зангори ранг
|
rgb.GB
|
EGALightRed
|
60
|
111100
|
Оч кизил
|
rgbR..
|
EGALightMagenta
|
61
|
111101
|
Очик кизил ранг
|
rgbR.B
|
EGAYellow
|
62
|
111110
|
Сарик
|
rgbRG.
|
EGAWhite
|
63
|
111111
|
Ок
|
rgbRGB
|
Фон SetBkColor ердасида берилади.
SetPalette ва SetAllPalette ердамида фойдаланувчи рангларнинг урнашиш кетма-кетлигини узгартириши мумкин (13.15 ва 13.16 табларга каранг) .
InitGraph га стандарт берилгандан сунг муносабатлар урнатилиши хакидаги ахборот PaletteType типидаги узгарувчида булади:
TYPE
PaletteType = RECORD
Size : byte;
Colors : ARRAY[0..MaxColors] OF shortint
END;
Бу ерда Size - палитрадаги ранглар сони Colors - регистрлардаги палитралар киймати
Colors - массивининг элементлари бутун сонлар, улар конкрет рангларни аниклайди. Масалан 4 индексли массивнинг ранги Red, 14 - элемент Yellow рангига тугри келади ва хокозо.
Жорий палитра хакидаги ахборотни GetDefaultPalette(VAR Palette : PaletteType) процедура ердамида олиш мумкин.
GetDefaultPalette(VAR Palette : PaletteType)
бу ерда Palette - PaletteType типидаги узгарувчи.
Turbo-Pascal тилида иккита мухим атрибутни урнатиш учун SetColor процедураси кулланилади.
SetColor(Color : word) процедура ранг Color параметри билан берилган графика процедурасининг рангини урнатади.
CGA-адаптерлари учун ранг фони 13.15 таблицасидан танланади.
EGA-ва VGA-адаптерлари учун фон сифатида 0..63 гача булган 13.16 таблицадаги хар кандай бутун сонлар берилиши мумкин.
Бир ва бир нечта рангларни узгартириш учун SetPalette процедурасида фойдаланиш мумкин, агарда бутун палитрани узгартириш талаб килинса SetAllPalette процедурасидан фойдаланамиз.
SetPalette (ColorNum : word; Color : shortint) процедура ранг ва палитра тартиб номерлари орасидаги мосликни узгартиришда кулланилади. ColorNum палитрадаги ранг номери, Color рангнинг янги киймати.
Еттинчи тартиб номер бошка рангни бериши учун, масалан Yellow ни бериши учун куйидагича езиш керак:
SetPalette(7,Yellow);
Бундан сунг экран ранги тезда узгаради. Процедура EGA- ва VGA-адаптерли ситемалар учунгина ишлайди.
SetAllPalette (VAR Palette: PaletteType)
EGA- ва VGA-адаптерли ситемаларда палитрадаги ранглар жойлашуви тартибини узгартириш учун ишлатилади.
Мисол:
TYPE
PaletteType = RECORD
Size : byte;
Colors : ARRAY [0..MaxColors] OF shortint
END;
VAR
Palette: PaletteType;
...
Palette.colors[0]:=Brown;
...
Палитралар ишлашга мисол сифатида куйидаги масалани куриб чикамиз. Берилган рангдаги фонда тугри бурчакни чизиб, сунгра 15- тартиб номерли White политрасини Green. билан алмаштириш керак булсин. Сунгара уз политрасини ташкил этиб, берилган фондаги тугри туртбурчакни экранга чикариш дастури куйида курсатилган:
PROGRAM DemoPalettes;
USES Crt, Graph;
VAR
DriverVar, ModeVar: integer;
Palette : PaletteType;
BEGIN
DriverVar:=detect;
InitGraph(DriverVar,ModeVar,'');
GetPalette(palette);
Rectangle(10,10,100,200); { White рангли тугри бурчак }
Delay(3000);
{ 15 (White) ни Green билан алмаштириш}
SetPalette(15,Green); {тугри бурчакни бошкалатдан буяш }
{ ок рангдан зангори рангга }
Delay(4000);
{ 15 тарангдан иборат уз палитрамизни урнатамиз }
Palette.Colors[0] := Brown;
Palette.Colors[1] := Red;
Palette.Colors[2] := Green;
Palette.Colors[3] := LightBlue;
...
Palette.Colors[15] := LightRed;
SetAllPalette(palette);
{ Black ранг фони Brown га узгаради }
{ биринчи тугри бурчак рангини LightRed га узгартиради }
{ Янги тугри бурчак оддий холатда охирги ранг билан чизилади }
{ фойдаланувчининг палитраси билан - LightRed }
Rectangle(120,100,600,300);
Readln;
CloseGraph
END.
Санаб утилганлардан ташкари яна кушимча воситалар мавжуд: GetBkColor, GetColor, GetMaxColor, GetPalette, GetPaletteSize. Уларнинг вазифалари билан кискача таништириб утамиз:
GetBkColor: word - фон рангининг жорий тартиб номерини кайтаради
GetColor: word - чизиш учун жорий ранг тартиб номерини кайтаради
GetMaxColor: word - минус 1 палитрадаги ранг кодининг максимал кийматини кайтаради .
GetPalette (VAR Palette: PaletteType) - жорий политра хакидаги ахборотни PaletteType типдаги узгарувчига чикаради. У etDefaultPalette дан фарклирок фойдаланувчи палитраларидаги берилганларни кайтаради.
GetPaletteSize: integer - жорий палитралардаги ранглар сонини кайтаради.
Do'stlaringiz bilan baham: |