Функция, которая нарисует на форме сетку и сделает форму похожей на дизайнер форм 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
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!