Функция, которая нарисует на форме сетку и сделает форму похожей на дизайнер форм Delphi

Функция, которая нарисует на форме сетку и сделает форму похожей на дизайнер форм Delphi

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

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 определяют размер сетки либо линий:
...

 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

Взято с Vingrad.ru http://forum.vingrad.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...