БОЛЬШОЙ FAQ ПО DELPHI



Заполнение изображением MDI-формы 3

Автор: Alexander N.Voronin

В разделе Заполнение изображением MDI-формы повторяющимся изображением. Я нашел (Copyright не мой а из книжки) более простой способ.


 ...
 private
   OutCanvas: TCanvas;
   OldWinProc, NewWinProc: Pointer;
 
 procedure NewWinProcedure(var Msg: TMessage);
 ...
 
 procedure TMainForm.FormCreate(Sender: TObject);
 begin
   NewWinProc := MakeObjectInstance(NewWinProcedure);
   OldWinProc := Pointer(SetWindowLong(ClientHandle,
     gwl_WndProc, Cardinal(NewWinProc)));
   OutCanvas := TCanvas.Create;
 end;
 
 procedure TMainForm.NewWinProcedure(var Msg: TMessage);
 var
   BmpWidth, BmpHeight: Integer;
   I, J: Integer;
 begin
   // default processing first
   Msg.Result := CallWindowProc(OldWinProc,
     ClientHandle, Msg.Msg, Msg.wParam, Msg.lParam);
 
   // handle background repaint
   if Msg.Msg = wm_EraseBkgnd then
   begin
     BmpWidth := MainForm.Image1.Width;
     BmpHeight := MainForm.Image1.Height;
     if (BmpWidth <> 0) and (BmpHeight <> 0) then
     begin
       OutCanvas.Handle := Msg.wParam;
       for I := 0 to MainForm.ClientWidth div BmpWidth do
         for J := 0 to MainForm.ClientHeight div BmpHeight do
           OutCanvas.Draw(I * BmpWidth, J * BmpHeight,
             MainForm.Image1.Picture.Graphic);
     end;
   end;
 end;
 
 procedure TMainForm.FormDestroy(Sender: TObject);
 begin
   OutCanvas.Free;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ