1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| procedure TCreeCarte.ImgCartePaint(Sender: TObject);
var
X, Y: Integer;
RctTxt: TRect;
begin
X:= ScrollBox.HorzScrollBar.Position;
Y:= ScrollBox.VertScrollBar.Position;
// if (X <> Xprec) or (Y <> Yprec) then
begin
// ImgCarte.Picture.Bitmap.Canvas.Line(0, 0, 1, 1);
Xprec:= X;
Yprec:= Y;
case ZoomAff of
15: DistGrad:= 100;
13: DistGrad:= 50;
11: DistGrad:= 20;
9: DistGrad:= 5;
end;
DistGrad:= DistGrad/kAff;
with ImgCarte.Canvas do
begin
Pen.Style:= psSolid;
Pen.Mode:= pmCopy;
Pen.Color:= clBlue;
end;
GradLo:= DistGrad*CarteAff.LonMin;
if GradLo < 0 then
GradLo:= Trunc(GradLo)
else
GradLo:= Trunc(GradLo)+1;
GradLo:= GradLo/DistGrad; // Première graduations des longitudes
PosGradLo:= (GradLo-CarteAff.LonMin)*FeLon; // Première position des graduations des longitudes
with ImgCarte.Canvas do
begin
Pen.Color:= clBlue;
Font.Color:= clBlue;
repeat
RctTxt:= Rect(Round(PosGradLo-20), 0+Y, Round(PosGradLo+20), 16+Y);
Line(Round(PosGradLo), 0, Round(PosGradLo), Height);
Rectangle(RctTxt);
TextRect(RctTxt, 0, 0, Format('%.2f°', [GradLo]), TS);
PosGradLo:= PosGradLo+1/DistGrad*FeLon;
GradLo:= GradLo+1/DistGrad;
until GradLo > CarteAff.LonMax;
end;
GradLa:= DistGrad*CarteAff.LatMax;
if GradLa > 0 then
GradLa:= Trunc(GradLa)
else
GradLa:= Trunc(GradLa)+1;
GradLa:= GradLa/DistGrad; // Première des graduations des latitudes
PosGradLa:= (CarteAff.LatMax-GradLa)*FeLat; // Première position des graduations des latitudes
with ImgCarte.Canvas do
begin
Pen.Color:= clBlue;
Font.Color:= clBlue;
repeat
RctTxt:= Rect(0+X, Round(PosGradLa-8), 40+X, Round(PosGradLa+8));
Line(0, Round(PosGradLa), Width, Round(PosGradLa));
Rectangle(RctTxt);
TextRect(RctTxt, 0, 0, Format('%.2f°', [GradLa]), TS);
PosGradLa:= PosGradLa+1/DistGrad*FeLat;
GradLa:= GradLa-1/DistGrad;
until GradLa < CarteAff.LatMin;
end;
end;
end; |
Partager