Функция, которая нарисует на форме сетку и сделает форму похожей на дизайнер форм Delphi. По умолчанию в дизайнере Delphi отступы равны 8 пикселям

 

Code:

Procedure TForm1.DrawGrid;

Var

TmpBmp: TBitmap;

Begin

TmpBmp := TBitmap.Create;

Try

   With TmpBmp Do

   Begin

     Width := 8;

     Height := 8;

     Canvas.Brush.Color := clBtnFace;

     Canvas.FillRect(TmpBmp.Canvas.ClipRect);

     Canvas.Pixels[0, 0] := clBlack;

     Canvas.Pixels[0, Height] := clBlack;

     Canvas.Pixels[Width, 0] := clBlack;

     Canvas.Pixels[Width, Height] := clBlack;

   End;

   With Canvas, Brush Do

   Begin

     Bitmap := TBitmap.Create;

     Try

       Bitmap.Assign(TmpBmp);

       Canvas.FillRect(Canvas.ClipRect);

     Finally

       Bitmap.Free;

     End;

   End;

Finally

   TmpBmp.Free;

End;

End;

 

{ Использование }

Procedure TForm1.FormPaint(Sender: TObject);

Begin

DrawGrid;

End;

 

Ещё способ, рисует сетку либо линии на компоненте AObject цветом FGridColor, в параметре ACanvas нужно передать холст компонента, FSizeX и FSizeY определяют размер сетки либо линий:

Code:

...

TGridType = (gtDots, gtLines);

...

Procedure Draw(AObject: TControl; ACanvas: TCanvas; FGridType: TGridType; FGridColor: TColor;

FSizeX, FSizeY: Integer);

Var

ColorRGB, X, Y, MaxX, MaxY: Integer;

DC: HDC;

Begin

MaxX := AObject.ClientWidth Div FSizeX;

MaxY := AObject.ClientHeight Div FSizeY;

Case FGridType of

   gtDots:

     Begin

       ColorRGB := ColorToRGB(FGridColor);

       DC := ACanvas.Handle;

       For X := 0 To MaxX Do

         For Y := 0 To MaxY Do

         SetPixel(DC, X * FSizeX, Y * FSizeY, ColorRGB);

     End;

   gtLines:

     Begin

       ACanvas.Pen.Color := FGridColor;

       For X := 0 To MaxX Do

       Begin

         ACanvas.MoveTo(X * FSizeX, 0);

         ACanvas.LineTo(X * FSizeY, AObject.ClientHeight);

       End;

       For Y := 0 To MaxY Do

       Begin

         ACanvas.MoveTo(0, Y * FSizeY);

         ACanvas.LineTo(AObject.ClientWidth, Y * FSizeY);

       End;

     End;

End;

End;

 

 

Автор: Rrader

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

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!