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
| procedure TCreeCarte.ImgCartePaint(Sender: TObject);
var
RctTxt : TRect;
X, Y, iPos : Integer;
begin
X := ScrollBox.HorzScrollBar.Position;
Y := ScrollBox.VertScrollBar.Position;
// if (X = Xprec) and (Y = Yprec) then Exit;
// ImgCarte.Picture.Bitmap.Canvas.Line(0, 0, 1, 1);
case ZoomAff of // A mettre ailleurs
15: DistGrad:= 100; // ''
13: DistGrad:= 50; // ''
11: DistGrad:= 20; // ''
9: DistGrad:= 5; // ''
end; // ''
DistGrad := DistGrad/kAff; // ''
GradLo := Trunc(CarteAff.LonMin) + Ord(CarteAff.LonMin >= 0)/DistGrad;
PosGradLo:= (GradLo-CarteAff.LonMin)*FeLon; // Première position des graduations des longitudes
with ImgCarte.Canvas do begin
Pen.Style := psSolid;
Pen.Mode := pmCopy;
Pen.Color := clBlue;
Font.Color:= clBlue;
repeat
iPos := Round(PosGradLo);
RctTxt := Rect(iPos - 20, 0 + Y, iPos + 20, 16 + Y);
Line(iPos, 0, iPos, Height);
Rectangle(RctTxt);
TextRect (RctTxt, 0, 0, Format('%.2f°', [GradLo]), TS);
PosGradLo+= 1 / DistGrad*FeLon;
GradLo += 1 / DistGrad;
until GradLo > CarteAff.LonMax;
GradLa := Trunc(CarteAff.LatMax) + Ord(CarteAff.LatMax <= 0)/DistGrad;
PosGradLa := (CarteAff.LatMax-GradLa)*FeLat; // Première position des graduations des latitudes
repeat
iPos := Round(PosGradLa);
RctTxt := Rect(0 + X, iPos - 8, 40 + X, iPos + 8);
Line(0, iPos, Width, iPos);
Rectangle(RctTxt);
TextRect(RctTxt, 0, 0, Format('%.2f°', [GradLa]), TS);
PosGradLa += 1 / DistGrad * FeLat;
GradLa -= 1 / DistGrad;
until GradLa < CarteAff.LatMin;
end;
Xprec := X;
Yprec := Y;
end; |
Partager