Графические возможности TurboPascal 7.0 — страница 16

  • Просмотров 6285
  • Скачиваний 578
  • Размер файла 3666
    Кб

фирм: 1) LG; 2) SONY; 3) PHILIPS; 4) SAMSUNG (рис.1-4,). Эмблемы известных фирм содержат много любопытной информации. Так два года шла работа над проектом новой эмблемы группы "Samsung". Её динамичный дизайн соответствует облику успешно прогрессирующего и растущего предприятия. Голубой цвет означает стабильность и надёж­ность. Эллипс символизирует движение мира через космос, несёт в себе идею постоянного изменения и обновления. Первая и

последняя буквы в слове Samsung слегка выступают за рамку овала, что отражает связь внут­реннего и внешнего, показывает стремление фирмы быть единым со всем миром и служить обществу как единому целому. Изучая эмблемы как геометрические объекты, можно найти немало интересного и в моделировании их на дисплее. Рассмотрим некоторые эмблемы в качестве упражнений по расчёту экранных координат. 1) Uses Crt,Graph; Var Gd,Gm,x,y: Integer; BEGIN Gd:=Vga; Gm:=VgaHi;

InitGraph(Gd,Gm,■'); SetColor(Red); SetFillStyle(1,Red); SetColor(White); SetFillStyle(1,White); FillEllipse(175,180,20,20); {внутренний белый кружок} Bar(220,160,235,320); Bar(230,320,265,305); {буква L} Arc(225,240,90,360,125); {дуга 1} Arc(225,240,90,360,140); {дуга 2} Line(225,100,225,115); {черта,соединяющая дуги) Bar(265,235,365,250); {черта в букве G справа) FloodFill(220,110,White); { заливка буквы G} { надпись } SetColor(LightGray); SetTextStyle(3,0,1); SetUserCharSize(4,l,4,l); for x:=420 to 430 do for y:=150 to 160 do OutTextXY(x,y,'LG'); { смена цвета фона } ReadLn; SetBkColor(LightRed); ReadLn; SetBkColor(White); ReadLn; CloseGraph END. Arc(x,y. Integer,

StartAngle, EndAngle, r: Word) - процедура рисования дуги радиуса г из центра с координатами (х,у). StartAngle и EndAngle -градусные меры начала и конца дуги. Для заливки замкнутого контура (изображения буквы G) можно использовать универсальную процедуру FloodFill(x,y: Integer, Border: Word). Она заливает область вокруг точки (х,у), ограниченную линиями цвета Border. 2) Uses Crt,Graph; Const r: Byte=10; draw: Boolean=true; Var Gd,Gm,x,y,columns,row: Integer; BEGIN Gd:=Vga; Gm:=VgaHi; InitGraph(Gd,Gm,''); SetBkColor(LightGray); SetColor(Blue); SetFillStyle(1,Blue);

for columns:=1 to 7 do begin for row:=l to 7 do begin if columns>5 then Case columns of 6: draw:=Not(row in [2,3] ); 7: draw:=Not(row in [1..4.7]); end; if draw then FillEllipse(170+columns*35,60+row*35,r,r) end; if columns in [1,3,5] then Inc(r,2) end; SetTextStyle(l,0,l); SetUserCharSize(3,1,2,1) ; for x:=200 to 203 do for y:=320 to 323 do OutTextXY(x,y,"SONY1); ReadLn; SetBkColor (White) ; ReadLn,SetPalette(l,5) ; SetBkColor(Cyan); ReadLn; CloseGraph END. Приведенная программа содержит вложенные циклы, параметры кото­рых используются при расчёте координат центров кругов. 3) Uses Crt,Graph; BEGIN Gd:=Vga; Gm:=VgaHi; InitGraph(Gd,Gm,■'); SetBkColor(Blue);

SetColor(White); for k:=0 to 1 do begin { внешний контур } Line(220+k,90,220+k,250); Line(420-k,90,420-k,250); Line(220,90-k,420,90-k); Arc(320,250,180,360,100-k); Circle(320,250,90+k); { внутренний круг } for i:=l to 3 do { 3 синусоиды } for x:=230 to 410 do PutPixel(x,232+Round(6*Sin(x/15-6))+i*10+k,15); { 2 большие звезды } Х:=270+к*100; у:=205+к*90; MoveTo(х,у-30); LineTo(x+2,y-2); LineTo(х+30,у); LineTo(x+2,y+2); LineTo(x,y+30); LineTo(x-2,y+2); LineTo(x-30,у) ; LineTo(х-2,у-2); LineTo(x,y-30); FloodFill(x,y,White); { 2 меньшие звезды } x:=290+k*60; y:=185+k*130; MoveTo(x,y-20); LineTo(x+l,y-l); LineTo(x+20,у); LineTo(x+l,y+l); LineTo(x,y+20); LineTo(x-l,y+l); LineTo(x-20,y); LineTo (x-l,y-l) ;