窗体背景如何与窗体一起显示?(100分)

  • 主题发起人 主题发起人 DelphiDFW
  • 开始时间 开始时间
D

DelphiDFW

Unregistered / Unconfirmed
GUEST, unregistred user!
现在碰到的问题是,我在窗体上放置一Image作为背景,或在窗体的OnPaint事件中手工画上背景。
窗体在启动时总是先出现窗体的灰色框架,闪一下后才出现背景图,尤其是在背景图比较大时尤为明显。
请问如何解决这个问题,在窗体显示时直接出现背景图,而不出现最开始的窗体框架?
 
把图片的格式改成小一点的文件试试,
 
把窗体设为透明,这样,灰色的框架就看不到了。
在Form的Create中加入
Canvas.Brush.Style:=bsClear;
 
试试下面行不行
先设FORM1的属性为不可见
按Ctrl+F12键,选Project1,出现工程单元,其内容如下
...
Application.CreateForm(TForm1, Form1);
Application.Run;
..
  在Application.CreateForm(TForm1, Form1); 后加入如下语句:
form1.visible:=true;
 
我用下面的方法,好像没有出现这种情况。
procedure TMainForm.FormCreate(Sender: TObject);
var
Bmp:Tbitmap;
begin
bmp:=TBitmap.create;
try
Bmp.LoadFromFile('YourPicture.bmp'); //导入图形
except
on Exception do //出错
begin
MessageDlg('打开文件出错!', mtError, [mbOk], 0);
MainMapForm.Destroy; //窗口卸载
end;
end;
end;
 
有两种方法
一。将窗体的DoubleBuffered属性设置为 True

二。自己在窗体的OnPaint中绘制背景,可以大大减弱这种闪烁现象
 
是不是你的机子配置有点低,我试了一下,没问题
win2000,delphi6。0,p3 500,256M,图片有900K
要不然你在Form生成的时候还做了什么处理
 
说明一点,我用的是JPG图片,1024X768,只有70多K,比较小了。
用Image作背景时IncrementalDisplay为True或False效果差不多
OnPaint中用Canvas.StrechDraw或Bitblt也差不多。
pnljh、kenny.hu的方法无效。
LiChaoHui的方法可以,设DoubleBuffered为True
只是比设为False时几乎多用出1M的内存
不知道是否有更好的解决方法?
 
我的系统环境:P4 1.5G + (256+128)SDRAM Win2k Adv Server + Sp3 Delphi 7
 
图片格式转为bmp是否会好一点?
 
找着解决方法了。
拦截 WM_ERASEBKGND 什么不做就行了。

谢谢大家的解答。
 
后退
顶部