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