194
if ReadKey=#0 then d:=ord(ReadKey); CloseGraph
end
end.
GetArcCoords процедурасы доғаның бастапқы, соңғы жəне центрінің координаталарын қайтарады. Тақырыбы:
Procedure GetArcCoords(var Coords: ArcCoordstype); мұндағы Coords – процедура доғаның бастапқы, соңғы жəне центрінің координаталарын қайтаратын, ArcCoordstype типті айнымалы.
ArcCoordstype типі Graph модулінде төмендегідей анықталған:
type
ArcCoordstype=record
X,Y: Integer;{Центр координатасы}
Xstart,Ystart: Integer;{Доғаның басы}
Xend,Yend: Integer;{Доғаның соңы} end;
Arc жəне GetArcCoords процедураларын бірге қолдану, екі түзудің доға арқылы түйіндесуін сызуға мүмкіндік береді. Келесі бұрыштары дөңгеленген тікбұрыш сызатын мысалда, радиус ұзындығының түзетілуіне назар аударыңыз.
Uses Graph,CRT;
const
RadX=50;{Көлденең радиус}
lx=400;{Ені}
ly=100;{Биіктігі}
var
d,r,e: Integer;
coo: ArcCoordstype;
x1,y1: Integer;
xa,ya: Word;
RadY: Integer;{Тік радиус} begin
{Графиканы іске қосамыз} d:=Detect;InitGraph(d,r,’’) ;
195
e:=GraphResult;
if e <> grOK then
WriteLn(GraphErrorMsg(e))
else
begin
GetAspectRatio(xa,ya);{Жақтаулар қатынасын
аламыз}
{Тік радиус пен экран жақтауларына қатысты
фигураның орналасуын есептейміз} RadY:=round (RadX *(xa /ya)); x1:=(GetMaxX-lx) div 2;
y1:=(GetMaxY-2*RadY-ly) div 2; {Фигураны сызамыз}
Line(x1,y1,x1+lx,y1);{Жоғарғы көлденең түзу} Arc (x1+lx,y1+RadY,0,90,RadX);{Дөңгелектеу}
GetArcCoords(coo);
with coo do
begin
Line(Xstart,Ystart,Xstart,Ystart+ly);
{Оң жақ тік түзу} Arc(Xstart-
RadX,Ystart+ly,270,0,RadX); GetArcCoords (coo);
Line(Xstart,Ystart,Xstart-lx,Ystart); {Төменгі көлденең түзу}
Arc(Xstart-lx,Ystart-RadY,180,270,RadX);
GetArcCoords(coo);
Line(Xstart,Ystart,Xstart,Ystart-ly);
Arc(Xstart+RadX,Ystart-ly,90,180,RadX)
end;
if ReadKey=#0 then d:=ord(ReadKey); CloseGraph
end
end.
Достарыңызбен бөлісу: |