procedure TForm17.Button1Click(Sender: TObject);
var
  aBmp : TBitmap;
  aCanvas : TCanvas;
  aRect : TRect;
begin
  aBmp := TBitmap.Create;
  aBmp.LoadFromFile('C:\a.bmp');
  aCanvas := TCanvas.Create;
  aCanvas.Handle := GetDC(Panel1.Handle);
  aRect := Rect(0,0,Panel1.Width,Panel1.Height);
  aCanvas.StretchDraw(aRect, aBmp);
  //SetStretchBltMode(aCanvas.Handle, STRETCH_HALFTONE);
  //StretchBlt(aCanvas.Handle,0,0,Panel1.Width,Panel1.Height,aBmp.Canvas.Handle,0,0,aBmp.Width,aBmp.Height,SRCCOPY);
  aBmp.Free;
  aCanvas.Free 
end;为什么Panel1上没显示图片

解决方案 »

  1.   

    显示了啊
    DELPHI7下通过
    C:\a.bmp此文件是否存在?
      

  2.   

    你是不是后面又做了什么操作,panel又重绘了?
      

  3.   

    晕,怎么只能放到按钮事件里啊,而且一切换就没了,怎么让它在show事件里也有效,切换的时候不会没掉
      

  4.   

    在每次PAINT消息中画图片,不然肯定会没了的,其实你这样不如用Image控件,全部封装好的,比你自己实现强多了
      

  5.   

    晕,你试试show事件里不太灵光,create事件里更不行,最大,最小话,窗口重绘就没了
      

  6.   

    错了,show事件里不行FormPaint事件里不太灵光
      

  7.   

    不如用Image控件,动态加载进来.
    把Image放在panel上
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Image1.Picture.LoadFromFile('C:\a.bmp');
    end;
      

  8.   

    换个方法我知道,就是想弄清楚Panel1要如何处理
      

  9.   

    画在PANEL上重绘下就没有了吧
    用IMAGE代替是不错的选择。
    不然你在PANEL重绘时再画