1. Pascal / Говнокод #7394

    +104

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    procedure drawGird( var image1: TImage; needAxisLines: Boolean = True );
    var
      xP, yP: Integer;
      xC, yC: Double;
      h, w, tx, ty: Integer;
      Text: String;
    begin
      image1.Canvas.FillRect( image1.ClientRect );
      accuracy := 1 / cellSize;
      image1.Canvas.Brush.Style := bsClear;
    
      xC := p2cX( 0 );
      while forC( xC, p2cX( image1.Width ), accuracy ) do
        if floor( xC * cellSize ) mod cellSize = 0 then
        begin
          xP := c2pX( xC );
          image1.Canvas.Pen.Color := clSilver;
          image1.Canvas.MoveTo( xP, 0 );
          image1.Canvas.LineTo( xP, image1.Height );
    
          if ( needaxislines ) and ( abs( xC ) > 0.5 ) and
            ( xP > 30 ) and ( xP < image1.Width - 30 ) then
          begin
            image1.Canvas.Pen.Color := clBlack;
            image1.Canvas.MoveTo( xP, c2pY( -0.5 ) );
            image1.Canvas.LineTo( xP, c2pY( 0.5 ) );
          end;
        end;
    
      yC := p2cY( 0 );
      while forC( yC, p2cY( image1.Height ), accuracy ) do
        if floor( yC * cellSize ) mod cellSize = 0 then
        begin
          yP := c2pY( yC );
          image1.Canvas.Pen.Color := clSilver;
          image1.Canvas.MoveTo( 0, yP );
          image1.Canvas.LineTo( image1.Width, yP );
    
          if ( needaxislines ) and ( abs( yC ) > 0.5 ) and
            ( yP > 30 ) and ( yP < image1.Height - 30 ) then
          begin
            image1.Canvas.Pen.Color := clBlack;
            image1.Canvas.MoveTo( c2pX( -0.5 ), yP );
            image1.Canvas.LineTo( c2pX( 0.5 ), yP );
          end;
        end;
    
      xC := p2cX( 0 );
      while forC( xC, p2cX( image1.Width ), accuracy ) do
        if floor( xC * cellSize ) mod cellSize = 0 then
        begin
          xP := c2pX( xC );
    
          if ( needaxislines ) and ( abs( xC ) > 1.5 ) and
            ( xP > 30 ) and ( xP < image1.Width - 30 ) then
          begin
            image1.Canvas.Pen.Color := clBlack;
    
            Text := IntToStr( floor( xC ) );
            h := image1.Canvas.TextHeight( Text ) div 2;
            w := image1.Canvas.TextWidth( Text ) div 2;
    
            image1.Canvas.TextOut( xP - w, c2pY( -0.5 ) + ( h + 3 ) *
              ( ( floor( abs( xC ) ) mod ( ( ( w * 2 + 8 ) div cellSize ) +
              1 ) ) ), Text );
    
          end;
        end;
    
      yC := p2cY( 0 );
      while forC( yC, p2cY( image1.Height ), accuracy ) do
        if floor( yC * cellSize ) mod cellSize = 0 then
        begin
          yP := c2pY( yC );
          if ( needaxislines ) and ( abs( yC ) > 1.5 ) and
            ( yP > 30 ) and ( yP < image1.Height - 30 ) then
          begin
            image1.Canvas.Pen.Color := clBlack;
    
            Text := IntToStr( floor( yC ) );
            h := image1.Canvas.TextHeight( Text ) div 2;
            w := image1.Canvas.TextWidth( Text ) div 2;
    
            image1.Canvas.TextOut( c2pX( -0.5 ) - w * 2 - 2, yP - h, Text );
          end;
        end;
    
      image1.Canvas.Brush.Style := bsSolid;
    
    end;

    Сотня строк кода, для того, чтобы нарисовать сетку.

    Запостил: Fai, 30 Июля 2011

    Комментарии (22) RSS

    Добавить комментарий