Самый простой вариант для тебя будет таким: кидаешь на форму TImage, свойство Align ставишь в alClient, Stretch в True и используешь затем любую картинку(но лучше не очень тяжелую ) Если же тебе нужно размножить какой то рисунок по всей поверхности формы, то кидай на форму TPaintBox, ставь Align в alClient и затем пиши этот код:
| Код | type TForm1 = class(TForm) PaintBox1: TPaintBox; BitBtn1: TBitBtn; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure PaintBox1Paint(Sender: TObject); private FBitmap: TBitmap; public end;
implemetation
procedure TForm1.FormCreate(Sender: TObject); begin FBitmap := TBitmap.Create; FBitmap.LoadFromFile('image.bmp'); end;
procedure TForm1.FormDestroy(Sender: TObject); begin FreeAndNil(FBitmap); end;
procedure TForm1.PaintBox1Paint(Sender: TObject); var xCount, yCount, x, y, ClipWidth, ClipHeight: integer; begin with PaintBox1 do begin xCount := Width div FBitmap.Width; yCount := Height div FBitmap.Height; for x := 0 to xCount - 1 do for y := 0 to yCount - 1 do BitBlt(Canvas.Handle, x * FBitmap.Width, y * FBitmap.Height, FBitmap.Width, FBitmap.Height, FBitmap.Canvas.Handle, 0, 0, SRCCOPY);
ClipWidth := Width - xCount * FBitmap.Width; ClipHeight := Height - yCount * FBitmap.Height;
if ClipHeight > 0 then for x := 0 to xCount - 1 do BitBlt(Canvas.Handle, x * FBitmap.Width, yCount * FBitmap.Height, FBitmap.Width, ClipHeight, FBitmap.Canvas.Handle, 0, 0, SRCCOPY);
if ClipWidth > 0 then for y := 0 to yCount - 1 do BitBlt(Canvas.Handle, xCount * FBitmap.Width, y * FBitmap.Height, ClipWidth, FBitmap.Height, FBitmap.Canvas.Handle, 0, 0, SRCCOPY);
if (ClipHeight > 0) and (ClipWidth > 0) then BitBlt(Canvas.Handle, xCount * FBitmap.Width, yCount * FBitmap.Height, ClipWidth, ClipHeight, FBitmap.Canvas.Handle, 0, 0, SRCCOPY); end; end;
|
При желании можно провести небольшую оптимизацию, например, вычислять xCount, yCount при изменении размеров формы и т.д. Если будет мерцать то в OnCreate формы поставть DoubleBuffered := True |