Программалау тілдері оқулық Қазақстан Республикасы Білім жəне ғылым министрлігі бекіткен Алматы, 2011



Pdf көрінісі
бет15/24
Дата03.12.2019
өлшемі1,6 Mb.
#52901
түріПрограмма
1   ...   11   12   13   14   15   16   17   18   ...   24
Байланысты:
Программалау учебник


7.4 Түстерді басқару
SetColor  процедурасы шығарылатын түзулер мен символ-
дардың ағымдағы түсін тағайындайды. Тақырыбы:
Procedure SetColor(Color: Word); 
мұндағы Color – ағымдағы түс.
Graph модулінде, түстерді беру үшін дəл CRT модуліндегідей 
тұрақтылар анықталған.
GetColor функциясы ағымдағы түс коды жазылған Word типті 
мəнді қайтарады. Тақырыбы:

199
Function GetColor: Word ; 
GetMaxColor функциясы SetColor процедурасында қолдануға 
болатын ең жоғарғы түс коды жазылған Word типті мəнді 
қайтарады. Тақырыбы:
Function GetMaxColor: Word; 
SetBkColor процедурасы. Фон түсін орнатады. Тақырыбы:
Procedure SetBkColor(Color: Word)
мұндағы Color – фон түсі.
Фоны тек қара түсті бола алатын мəтіндік режимге қарағанда, 
графикалық режимде фон кез келген түсте болуы мүмкін. Жаңа 
фон түсін орнату, бірден графикалық экран түсін өзгертеді. Бұл 
бір бейненің екі бөлігінің фон түсі екі түрлі болмайтындығын 
білдіреді. CGA – адаптері үшін, жоғары мүмкіндікті режимде фон 
түсін орнату, екпінді пикселдер түсін өзгертеді. Сіз фон түсін 0 
(Black) өзгеше кез келген түске ауыстырғаннан кейін, 0 түсті қара 
түс ретінде қолдана алмайсыз. Себебі, Graph модулі 0 түсті фон 
түсі ретінде қабылдайды да, 0 түсті фон түсіне алмастырылады. 
Сонымен, егер сіз фон түсін қарадан басқа түске ауыстырсаңыз, 
бастапқы қара түсті қайтара алмайсыз!
Егер сіздің компьютеріңіз түсті экранмен жабдықталған 
болса, онда келесі программа SetBkColor процедурасының жұ-
мысын көрнекі түрде көрсетеді. Программа бірінің ішіне бірі 
салынған он тікбұрыштар салады да, фонның түсін ауыстырады. 
Программадан шығу үшін кез келген пернеге басыңыз.
uses Graph, CRT;
const
   NC:array [0..15]of String[12]= 
('Black','Blue','Green','Cyan','Red','Magenta',
  'Brown','LightGray','DarkGray','LightBlue',
  'LightGreen1,'LightCyan1,'LightRed',
  'LightMagenta','Yellow','White');
var
   d,r,e,k,color,dx,dy: Integer;
begin
{Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,r,'');

200
   e:=GraphResult;
   if e <> grOK then
      WriteLn(GraphErrorMsg(e))
   else
      begin
 {Экран ортасына мəтін шығарамыз}
   OutTextXY(200,GetMaxY div 2,'BACKGROUND 
COLOR');
   dx:=GetMaxX div 30; {Ұзындықтың өсімшесі}
   dy:=GetMaxY div 25; {Биіктіктің өсімшесі}
     for k:=0 to 9 do{ 10 тікбұрыш шығарамыз}
Rectangle(k*dx,k*dy,GetMaxX-k*dx,GetMaxY-
k*dy);
      color:=black; {Фонның бастапқы түсі}
         repeat {Фонды өзгерту циклі}
      SetBkColor(color);
      SetBkColor(color);
      SetFillStyle(0,Color);
      SetBkColor(color);
      Bar(345,GetMaxY div 2,440,GetMaxY div 
2+8);
      SetBkColor(color);
      OutTextXY(345,GetMaxY div 2,NC[color]);
      SetBkColor(color);
      delay(1000);
      SetBkColor(co 
lor);
      inc(color);
      if color > White then
      color:=Black
      until KeyPressed;
      if ReadKey=#0 then
         k:=ord(ReadKey);
         CloseGraph
      end
end. 
GetBkColor  функциясы ағымдағы фон түсі жазылған, Word 
типті мəнді қайтарады. Тақырыбы:
Function GetBkColor: Word;

201
SetPalette  процедурасы палитраның бір түсін жаңа түске 
ауыстырады. Тақырыбы:
Procedure SetPalette (N: Word; Color: Shortlnt);
Мұндағы N – палитрадағы түс нөмірі; Color – жаңа 
орнатылатын түс нөмірі.
Бұл процедура тек EGA немесе VGA адаптерлерімен жұмыс 
жасай алады. Ол IBM 8514 немесе 256 – түсті VGA адаптерінде 
қолданылмайды, бұл адаптерлер үшін ерекше SetRGBPatette 
процедурасы бар. EGA/VGA адаптерлеріне палитраның түстерінің 
бастапқы орналасуы олардың тұрақтылармен сипатталу ретіне 
сəйкес келеді: 0 – қара, 1 – көк, 2 – жасыл жəне т.с.с. Процедура 
іске қосылғаннан кейін бейненің, палитра түстерінің N индексті 
түсімен салынған фрагменттері Color түсіне ие болады. Мысалы, 
SetPalette (2, White) операторы орындалғаннан кейін, 2 индексті 
түс (бастапқыда бұл – күлгін түс, Cyan) ақ түске ауыстырылады. 
Нөмірі 0 түс, фон түсі болып саналады жəне ол да кез келген түс 
сияқты өзгере алады.
Келесі программа экранға түрлі түсті түзулерді шығарып, 
олардың түсін кездейсоқ түске ауыстырады
uses Graph, CRT;
var
   d,r,e,N,k,color: Integer;
   Palette: PaletteTyper;
begin
{Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,r,’’);
   e:=GraphResult;
   if e <> grOK then
      WriteLn(GraphErrorMsg(e))
   else
      begin
{Қалың, біркелкі сызықтарды таңдаймыз}
       SetLineStyle(SolidLn, 0, ThickWidth);
       GetPalette(Palette); {Ағымдағы палитра}
       for Color:=0 to Palette.Size-1 do
           begin
            SetColor(Color);
14–1618

202
       Line(GetMaxX div 3,Color*10,2*GetMaxX 
div 3,Color*10)
            end;
  {Палитраны өзгертіп, тұтынушы əрекетін 
күтеміз}
         while not KeyPressed do
            for e:=0 to Palette.Size-1 do
              SetPalette(e,Random(Palette.
Size));
         if ReadKey=#0 then d := ord(ReadKey);
         CloseGraph
      end
end. 
GetPalette  процедурасы ағымдағы палитраның көлемі мен 
түсін қайтарады. Тақырыбы:
Procedure GetPalette (var Palettelnfo: PaletteType) 
мұндағы Palettelnfo – палитраның көлемі мен түсін қайтаратын, 
Palette Type типті айнымалы.
Graph модулінде келесі тұрақты анықталған.
const
   MaxColors =15; 
жəне оның типі де анықталған:
type
   PaletteType = record
   Size : Word; {Палитрадағы түстер саны}
   Colors : array [0..MaxColors] of Shortlnt
   {Палитраға кіретін түстер нөмірі }
end
Келесі программа көмегімен экранға ағымдағы палитраның 
барлық түстерінің нөмірін шығаруға болады.
uses Graph;
var
   Palette: PaletteType;
   d,r,e,k: Integer;
begin
{Графиканы іске қосамыз}

203
   d:=Detect; InitGraph(d,r,’’);
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e))
   else
      begin
         GetPalette(Palette); {Палитраны 
аламыз}
         CloseGraph; {Мəтіндік режимге 
ораламыз}
         with Palette do {Түстер нөмірін 
шығарамыз}
            for k:=0 to pred(Size) do
               Write(Colors[k]:5);
      end
end. 
SetAllPalette  процедурасы палитраның бірнеше түстерін бір 
мезгілде өзгертеді. Процедура тақырыбы:
Procedure SetAllPalette (var Palette);
Palette параметрі процедура тақырыбында типтік емес па-
раметр ретінде сипатталған. Бұл параметрдің бірінші байтында 
N палитра ұзындығы, қалған N байттар – (–1) мен MaxColors 
аралығындағы жаңадан орнатылатын түстер нөмірі. (–1) коды 
бастапқы палитраның сəйкес түсі өзгермейтіндігін білдіреді.
Келесі программада палитраның барлық түстері бір мезгілде 
өзгереді.
uses Graph, CRT;
var
   Palette: array [0..MaxColors] of Shortint;
   d,r,e,k: Integer;
begin
{Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,r,'');
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e))

204
   else
      begin
{Қалың, біркелкі сызықтарды таңдаймыз}
         SetLineStyle(SolidLn, 0, ThickWidth);
{Сызықтарды қол жеткізуге болатын барлық 
түстермен шығарамыз}
     for k:=1 to GetMaxColor do
      begin
      SetColor(k);
     Line(GetMaxX div 3,k*10,2*GetMaxX div 
3,k*10)
           end;
      Palette[0]:=MaxColors; {Палитра көлемі}
      repeat {Палитраны ауыстыру цикл}
       for k:=1 to MaxColors do
       Palette[k]:=Random(succ(MaxCoLors));
            SetAllPalette(Palette)
         until KeyPressed;
         if ReadKey=#0 then k:=ord(ReadKey);
         CloseGraph
      end
end. 
GetPaletteSize функциясы палитра көлемі (қол жеткізуге бо-
латын түстердің максимальді саны) жаылған Integer типті мəнді 
қайтарады. Тақырыбы:
Function GetPaletteSize: Integer;
GetDefaultPalette процедурасы үнсіз келісім бойынша орна-
ты латын палитра құрылымын қайтарады (автобаптау режимінде). 
Тақырыбы:
Procedure GetDefaultPalette(var Palette: PaletteType);
мұндағы Palette –палитра көлемі мен түстері қайтарылатын Pal-
etteType типті айнымалы.
SjetFillStyle процедурасы толтыру стилін орнатады (тип жəне 
түс) заполнения. Тақырыбы:
Procedure SetFillStyle (Fill,Color: Word);
мұндағы Fill – толтыру типі; Color – толтыру түсі.

205
Толтыру арқылы бейненің қандай да бір фрагментін өрнек-
термен қайталап салып отыруға болады. Толтыру типін көрсеті 
үшін келесі алдын ала анықталған тұрақтылар қолданылады:
const
   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; {Өрнек түрін тұтынушы анықтайды} 
Келесі мысал программасы сіздерге стандартты толтыру 
типтерін көрсетеді.
uses Graph, CRT;
var
   d,r,e,k,j,x,y: Integer;
begin
{Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,r,'');
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e))
   else
      begin
        x:=GetMaxX div 6;{Графиктің экрандағы 
орны}
         у:=GetMaxY div 5; 
         for j:=0 to 2 do{Екі қатар}
            for k:=0 to 3 do{төрт квадраттан}
               begin
   Rectangle((k+1)*x,(j+1)*y,(k+2)*x,(j+2)*y);
       SetFillStyle(k+j*4,j+1);

206
      Bar((k+1)*x+1,(j+1)*y+1,(k+2)*x-
1,(j+2)*y-1);
               end;
         if ReadKey=#0 then k:=ord(ReadKey);
         CloseGraph
      end
end. 
Егер  Fill параметрінің мəні 12 ( UserFill) болса, онда өрнек 
суретін программист SetFillPattern процедурасын шақыру ар-
қылы өзі анықтайды.
SetFillPattern процедурасы сурет үлгісін жəне штрихтау түсін 
анықтайды. Тақырыбы:
Procedure SetFillPattern(Pattern: FillPatternType; Color: Word); 
мұндағы Pattern – SetFillStyle процедурасында Fill = UserFill 
үшін сурет үлгісін анықтайтын FillPatternType типті өрнек; Color 
– толтыру түсі.
Сурет үлгісі 8x8 пикселден тұратын матрица түрінде беріледі 
жəне төмендегідей типтегі 8 байт жиым түрінде де берілуі мүмкін:
type
   FillPatternType = array [1..8] of Byte; 
Осы байттардың кез келген разрядтары пикселдің жануын 
басқарады. Бірінші байт экранның бірінші жолының 8 пикселін, 
екінші байт – екінші жолдың 8 пикселін жəне т.с.с.
7.9-суретте толтырудың екі үлгісінің мысалы келтірілген. 
Суретте сызықшамен жанбайтын пиксел, ал тіктөртбұрышпен 
жанатын пиксел белгіленген. Əр 8 пикселге сəйкес байттың 
оналтылық коды келтіріледі.
Келесі программа осы үлгімен экранның екі тікбұрышты 
ауданын толтырады.
uses Graph, CRT;
const
pattl: FillPattern-
Type=($49,$92,$49,$92,$49,$92,$49,$92);
patt2: FillPattern-
Type=($00,$18,$24,$42,$42,$24,$18,$00);
var

207
   d,r,e: Integer;
begin 
{Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,r,’’);
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e))
   else
      begin
         if d=CGA then SetGraphMode (0);
{CGA адаптері үшін түстерді орнатамыз}
         SetFillStyle(UserFill,White);
{Сол жақ жоғарғы квадрат}
        SetFillPattern(Patt1,1);
        Bar(0,0,GetMaxX div 2, GetMaxY div 2);
{Оң жақ төменгі квадрат}
         SetFillPattern(Patt2,2);
Bar(GetMaxX div 2,GetMaxY div 
2,GetMaxX,GetMaxY);
         if ReadKey=#0 then d:=ord(ReadKey);
         CloseGraph
      end
end. 
7.9-сурет. Толтыру үлгілері жəне олардың кодтары
Егер процедураны шақырғанда түс коды дұрыс көрсетілмесе, 
онда процедура іске қосылмайды да, осыған дейін орнатылған 
толтыру үлгісі сақталады. Алдыңғы мысалда, CGA –адаптерінің 
жұмыс режи мін орнататын 

208
if d=CGA then SetGraphMode (о); 
алып тастасақ, осы адаптермен жабдықталған компьютер экра-
нына бірдей екі тікбұрыш салынады. Себебі, 
SetFUlPattern (patt2,2); 
операторында ағымдағы режим үшін мүмкін емес түс коды 
жазылған, сондықтан оператор орындалмайды. Бұл айтылғандар 
SetFillStyle процедурасына қатысты емес. Бұл процедураның 
Fill параметрі 0 мен 11 диапазонындағы мəндерді қабылдайды: 
программа  CGA – адаптерінің жоғарғы режимінде де дұрыс 
жұмыс істейтін болады, фон түсінен басқа палитра түстері ақ 
түске ауыстырылады.
GetFillPattern  процедурасы  SetFillPattern процедурасы 
орнат  қан толтыру үлгісін қайтарадыТақырыбы:
Procedure GetFillPattern(var Pattern: FillPatternType); 
мұндағы  Pattern – толтыру үлгісі қайтарылатын, FillPattem-
Type типті айнымалы.
Егер программа үлгіні SetFillPattern процедурасының кө-
мегімен орнатпаса, Pattern жиымы мəні 255 ($FF) байттармен 
толтырылады. 
GetFillSettinqs  процедурасы ағымдағы толтыру стилін қай-
тарады. Тақырыбы:
Procedure GetFillSettinga(var Pattlnfo: FillSettingsType);
мұндағы  Pattlnfo – ағымдағы толтыру стилі қайтарылатын, 
FillSettingsType типті айнымалы.
Graph модулінде келесі тип анықталған:
type
   FillSettingsType = record
   Pattern: Word; {Үлгі}
   Color : Word {Түс}
end
Бұл жазбадағы Pattern жəне Color өрістерінің мəні, SetFillStyle 
процедурасын шақырғандағы сəйкес параметрлердегідей.
SetRGBPalette процедурасы IBM 8514 VGA адаптерімен жұ-
мыс жасайтын түстер гаммасын тағайындайды. Тақырыбы:
Procedure SetRGBPalatte(ColNum,RedVal, GraenVal,BlueVal: 
Integer); 
мұндағы  ColNum – түс нөмірі; RedVal, GreenVal, BlueVal – 

209
сəйкесінше, қызыл, жасыл жəне көк түстердің қоюлығын анық-
тайтын Integer типті өрнек.
Келесі программада экран ортасына ақ түсті тікбұрыш салы-
нады да, ол SetRGBPalette процедурасының көмегімен кездей соқ 
түстерге боялады. Программадан шығу үшін кез келген пернеге 
басыңыз.
uses Graph,CRT;
var
   Driver,Mode,Err,xl,yl: Integer;
begin
{Графиканы іске қосамыз}
   Driver:=Detect;
   InitGraph(Driver,Mode,’’);
   Err:=GraphResult;
   if ErroO then
      WriteLn(GraphErrorMsg(Err))
   else if Driver in [IBM8514, VGA] then
        begin
 {Экран ортасына тікбұрыш саламыз}
          x1:=GetMaxX div 4;
          y1:=GetMaxY div 4;
          SetColor(lS);
          Bar(x1,y1,3*x1,3*y1);
 {Ақ түсті кездейсоқ түске ауыстырамыз}
           while not KeyPressed do
          SetRGBPalette(15,Random(256),Random(
256),Random(256));
            CloseGraph
         end
      else
         begin
        CloseGraph;.
      WriteLn(‘Адаптер түстерді 
басқарудың’,’RGB-режим қолдамайды’);
    end
end. 
FloodFill процедурасы ағымдағы толтыру стилін (өрнек жəне 
түс) қолданып, тұйық фигураның ішін бояйды. Тақырыбы:
Procedure FloodFill(X,Y: Integer; Border: Word); 

210
мұндағы  X, Y – тұйық фигураның ішіндегі кез келген нүкте 
координатасы; Border – шекара сызығының түсі.
Егер фигура тұйық болмаса, онда бүкіл экран боялады.
Процедурадағы тұйық фигураның шекарасын қарау алгоритмі-
нің жетік емес екендігін есте сақтау керек. Егер қатарынан екі бос 
жол шығарылатын болса, онда бояу тоқтатылады. Мұндай жағдай 
көбіне LtSlashFill типін қолданып, кішігірім фигураны бояғанда 
пайда болады. Турбо Паскаль тілінің фирмалық нұсқауларында 
FloodFill процедурасының орнына, мүмкіндігінше, FillPoly про-
цедурасын қолдануға кеңес берілген.
Келесі программа кездейсоқ дөңгелектер ішін бояуды көр-
сетеді. Алдымен экранда терезе салынып, оның ішінде тікбұ-
рышты бояйды. Тікбұрыштың жартысы боялмай қалады, себебі 
программа жұмысын тоқтатып, Enter пернесінің басылуын кү-
теді. Сонан кейін, экранға кездейсоқ дөңгелектер салынып, кез 
келген перне басылғанша боялады. Егер LtSlashFill типінің ор-
нына  SlashFill типі қолданылса, тікбұрыш толығымен боялады. 
Егер программа өте ұзақ жұмыс істейтін болса, ол тұрып қалуы 
мүмкін, бұл көрсетілген алгоритмнің жетік еместігін дəлелдейді.
uses Graph, CRT;
var
   d,r,е,х,у,с: Integer;
begin
 {Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,r,'');
   e:=GraphResult;
   if e <> grOk then WriteLn(GraphErrorMsg(e))
   else
      begin
 {Терезе саламыз}
         х:=GetMaxX div 4;
         у:=GetMaxY div 4;
         Rectangle(х,у,3*x,3*y);
         SetViewPort(x+1,y+1, 3*x-1,3*y-
1,ClipOn);
         {Кішкене тікбұрыштың боялуын 
көрсетеміз }

211
        SetPillStyle(LtSlashFill,GetMaxColor);
         Rectangle(0,0,8,20);
         FloodFill(1,1,GetMaxColor);
         OutTextXY(10,25,'Press Enter...');
      ReadLn; { Enter пернесінің басылуын 
күтеміз}
 {Кез келген перне басылғанша дөңгелектер са-
ламыз}
         repeat
 {Кездейсоқ бояу стилін анықтаймыз}
    SetFillStyle(Random(12),Random(GetMaxCol
or+1));
{Дөңгелектің центрінің координатасы мен түсін 
береміз}
       х:=Random (GetMaxX div 2);
        у:=Random (GetMaxY div 2);
        с:=Random (succ(GetMaxColor));
         SetColor(c);
  {Дөңгелекті шығарып, бояймыз}
       Circle(x, у,Random(GetMaxY div 5));
       FloodFill (x,у,с);
       until KeyPressed;
       if ReadKey=#0 then
       x:=ord(ReadKey);
       CloseGraph;
      end
end. 
Bar  процедурасы экранның тікбұрышты аймағын бояйды. 
Тақырыбы:
Procedure Bar (X1,Y1,X2,Y2: Integer);
мұндағы X1…Y2 – боялатын ауданның сол жақ жоғарғы (X1, 
Y1) жəне оң жақ төменгі (X2, Y2) бұрыштарының координатасы.
Процедура тікбұрышты SetFillStyle процедурасында тағайын-
дал ған ағымдағы өрнек үлгісімен жəне түспен бояйды (шекара-
сын сызбайды).
Келесі программа əдемі түстер эффектін көрсетеді (кездей 
соқ тікбұрыштарды бояу).

212
uses Graph, CRT;
var
   d,r,e: Integer;
begin
{Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,r,'');
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e))
   else
      begin
{Экран ортасында терезе саламыз}
         d:=GetMaxX div 4;
         r:=GetMaxY div 4; Rectangle(d,r,3*d,3*r);
         SetViewPort(d+1,r+1,3*d-1,3*r-1,ClipOn);
{Кездейсоқ тікбұрыштарды салып, бояу циклы}
         repeat
SetFillStyle(Random(12),Random(succ(GetMaxColor)));
Bar(Random(Ge tMaxX),Random(Ge tMaxY),
            Random(Ge tMaxX),Random(Ge tMaxY));
    until KeyPressed;
       if ReadKey=#0 then d:=ord(ReadKey);
      CloseGraph
    end
end. 
ВаrЗD  процедурасы. Кеңістікте параллепипед салып, оның 
ал дыңғы жағын бояйды. Тақырыбы:
Procedure Bar3D (XI,Y1,X2,Y2,Depth: Integer; Top: Boolean);
мұндағы X1...Y2 – параллепипедтің алдыңғы жағының сол жақ 
жоғарғы (X1, Y1) жəне оң жақ төменгі (Х2, Y2) бұрыштарының 
координатасы; Depth – кеңістіктегі бейненің пикселмен берілген 
үшінші өлшемі («тереңдігі»); Tор – жоғарғы жағының бейнелену 
тəсілі.
Егер Тор параметрінің мəні True болса, онда параллелепипед-
тің жоғарғы беті сызылады, кері жағдайда сызылмайды (бұл 
жағдай бірінің үстіне бірі қойылған параллелепипедтер үшін 
қолданылады). Бұл параметрдің мəні ретінде Graph модулінде 
анықталған келесі тұрақтылардың бірін қолдануға болады:

213
const
   TopOn = True;
   TopOff = False; 
Сызу кезінде ағымдағы түзу стилі (SetLineStyle) жəне түс (Set-
Color) қолданылады. Алдыңғы жақ ағымдағы толтыру стилімен 
боялады (SetFillStyle).
Процедура көбіне бағаналық диаграмма салғанда қолда ны-
лады. Параллелепипедтің боялмаған жақтарынан бейненің басқа 
элементтері көрініп тұрады.
Келесі программа Bar3D процедурасын қолданудың түрлі 
мүмкіндіктерін көрсетеді.
uses Graph,CRT;
var
   d,r,e: Integer;
begin
{Графиканы іске қосамыз}
   d:=Detect;
   Ini-tGraph(d,r,'');
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e));
   else
      begin
{Жоғарғы жағы бар бағана:}
         Bar3D (80, 100, 120, 180, 15, TopOn);
{Жоғарғы жағы жоқ бағана:}
         Ваг3D (150, 150, 190, 180, 15, 
TopOff);
{Бұл бағана келесі бағана үстінде тұр, ол 
түссіз:}
         Bar3D (230, 50, 250, 150, 15, TopOn);
         Bar3D (220, 150, 260, 180, 15, TopOn);
{Бұл бағананың жоғарғы жағы жоқ, сондықтан ол 
үстіне қойылған бағанаға кедергі жасамайды:}
         Bar3D (300, 150, 340, 180, 15, TopOff);
         SetLineStyle(3,0,1);
         SetColor(Yellow);


Достарыңызбен бөлісу:
1   ...   11   12   13   14   15   16   17   18   ...   24




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет