简单的问题,白拿50分。(50分)

  • 主题发起人 主题发起人 zhbforce
  • 开始时间 开始时间
Z

zhbforce

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在一个fsMDIForm的表单中放置一个BMP的背景,先在表单上放置了一个TImage的控件,现在表单上已经有一个工具条,我在RESIZE
事件中添加了调整IMAGE大小的代码,但是当用鼠标调整表单大小的时候,发现图象不能刷新,出现混乱的图象,问如何解决?
将表单最小化,再恢复时图象又趋于正常。

问如何解决?
 
在 resize事件发生的时候 image.repaint 一下应该可以。
 
将image的Align属性设成alClient。
顺便问一下,“表单”是不是网页的术语?
 
image1.Align:=alClient;
image1.stretch:=true;
 
image1.stretch:=true;
Image1.Refresh;
 
通过以下设置,不再需要处理 OnResize

image1.Align:=alClient;
image1.stretch:=true;
 
上面几们兄弟说的对,来晚了,哎...
 
晚了,哎。。。
 
1。在form上加上image.
2。在form1的private中加如下定义:
fclientinstance,fprevclientproc:tfarproc;
procedure clientwndproc(var message:tmessage);
procedure tform1.clientwndproc(var message:tmessage);
var
mydc:hdc;
ro,co:word;
begin
with message do
case msg of
wm-erasebkgnd:
begin
mydc:=twmreasebkgnd(message).dc;
for ro:=0 to clientheight div image1.picture.hight do
for co:=0 to clientwidth div image1.picture.width do
bitbtn(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,iparam);
end;
end;
在form1的create加
fclientinstance:=makeobjectinstance(clientwndproc);
fprevclientproc:=pointer(getwindowlong(clienthandle,gwl_wndproc);
setwindowlong(clienthandle,gwl_wndproc,longint(fclientinstance));
 
唉,还是不行,tswhoney的方法有太多的编译错误,也许是因为我对API不够了解。

将对齐设为alClient之后,我原来将图片的LEFT和top都设成0,表单上有一个工具栏,
刚好可以将图片充满表单,现在就会在表单的工具栏下方显示出一块空白的区域。而且重画的
问题还是没有解决。
 
将 TImage 第一个放到表单上,然后设置那个属性。将调入图像。

肯定你的做法有问题。
 
现在delphi6不用写代码了,向上面几位说的就可以实现,你的问题可能是图片尺寸小了。
 
[?]我按照各位所说的在Delphi7中使用是没有问题的,但是在DELPHI6下无论如何也不行,换了一台机器
还是不行,我得环境是Delphi6 update2+Win2k or WinMe。

望各位大侠赐教!
 
to tswhoney
你的代码只是实现平铺,并没有解决问题呀?
 
接受答案了.
 
后退
顶部