请有什么好方法给多窗体程序的客户区加图片,并把图片设为平铺?望高手指点!!!

解决方案 »

  1.   

    UP!stretch:=true;不知道楼主的真实意思是什么??
      

  2.   

    我用IMAGE的时候客户区的上半部分不能被图片覆盖,不知道有没有其它办法?
      

  3.   

    看这样如何:
    /在主窗体中添加Image1控件//申明private FClientInstance : TFarProc;
     FPrevClientProc : TFarProc;
     procedure ClientWndProc(var Message: Tmessage);//------------------------------procedure TMainFrm.ClientWndProc(var Message: Tmessage);var  Dc : hDC;
      Row : Integer;
      Col : Integer; begin  with Message do
      case Msg of WM_ERASEBKGND: begin  Dc := TWMEraseBkGnd(Message).Dc;
      for Row := 0 to ClientHeight div Image1.Picture.Height do
      for Col := 0 to ClientWidth div Image1.Picture.Width do
       BitBlt(Dc,
        Col * Image1.Picture.Width,
        Row * Image1.Picture.Height,
        Image1.Picture.Width,
        Image1.Picture.Height,
        Image1.Picture.Bitmap.Canvas.Handle,
        0,
        0,
        SRCCOPY);
       Result := 1;   end;
    else    Result := CallWindowProc(FPrevClientProc,
        ClientHandle,
        Msg,
        wParam,
        lParam);
      end;
     end; //FormOnCreate procedure TMainFrm.FormCreate(Sender: Tobject); begin  FClientInstance := MakeObjectInstance(ClientWndProc);
      FPrevClientProc := Pointer(GetWindowLong(ClientHandle,GWL_WNDPROC));
      SetWindowLong(ClientHandle,GWL_WNDPROC, LongInt(FClientInstance)); end;
      

  4.   

    就是 ekin(活着) (的最好用
      

  5.   


    AJpeg:TJpegImage;
    ...
    Canvas.Draw(0,0,AJpeg);
      

  6.   

    当把主窗体设置为MDIForm怎么之后,
    for Row := 0 to ClientHeight div Image1.Picture.Height do
      for Col := 0 to ClientWidth div Image1.Picture.Width do就出现了除0错误
      

  7.   

    为Mdi 主窗体设置背景图:unit unitForm1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls;type
      TForm1 = class(TForm)
        Image1: TImage;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        FClientInstance,
          FPrevClientProc: TFarProc;
        procedure ClientWndProc(var Message: TMessage);  public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}{ TForm1 }procedure TForm1.ClientWndProc(var Message: TMessage);var
      MyDC: hDC;
      Ro, Co: Word;
    begin
      with Message do
        case Msg of
          WM_ERASEBKGND:
            begin
              MyDC := TWMEraseBkGnd(Message).DC;
              for Ro := 0 to ClientHeight div Image1.Picture.Height do
                for Co := 0 to ClientWIDTH div Image1.Picture.Width do
                  BitBlt(MyDC, Co * Image1.Picture.Width, Ro * Image1.Picture.Height,
                    Image1.Picture.Width, Image1.Picture.Height,
                    Image1.Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
              Result := 1;
            end;
          else
            Result := CallWindowProc(FPrevClientProc, ClientHandle, Msg, wParam, lParam);
        end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      FClientInstance := MakeObjectInstance(ClientWndProc);
      FPrevClientProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
      SetWindowLong(ClientHandle, GWL_WNDPROC, LongInt(FClientInstance));
    end;end.