想在MDI主窗体中加一个背景图,在窗口拉伸时图片能随之改变大小不会发生闪烁现象

解决方案 »

  1.   

    这是TGraphicControl都有的问题,从TCustomControl派生写个新的控件就行了。
      

  2.   

    或者你可以把图片加载到一个TBitmap中,然后在主窗口的OnPaint事件中手工将图片画到Form的Canvas上面去,这样比较简单,不过不能复用。
      

  3.   

    将背景容器的双缓冲打开,一般就好了
    doublebuffer:=true;
      

  4.   

    bmp:=Tbitmap.Create;
    bmp.LoadFromFile('bj.bmp');
    memdc:=createcompatibledc(self.Canvas.Handle);
    tmpdc:=createcompatibledc(self.Canvas.Handle);
    selectobject(tmpdc,bmp.Handle);
    stretchBlt(memdc,0,0,self.Width,self.Height,tmpdc,
               0,0,bmp.Width,bmp.Height,SRCCOPY);我这样做图加不到背景上,应该怎么做啊?
      

  5.   

    同意:
     baiduan(小安子)
      

  6.   

    即然都 TBitmap 了,就用 CopyRect 吧
    bmp:=Tbitmap.Create;
    bmp.LoadFromFile('bj.bmp');{memdc:=createcompatibledc(self.Canvas.Handle);
    tmpdc:=createcompatibledc(self.Canvas.Handle);
    selectobject(tmpdc,bmp.Handle);
    stretchBlt(memdc,0,0,self.Width,self.Height,tmpdc,
               0,0,bmp.Width,bmp.Height,SRCCOPY);}Canvas.CopyRect(rect(0, 0, Width, Height), bmp.Canvas, bmp.Canvas.ClipRect);
      

  7.   


     baiduan(小安子)这方法就可以对付了。