怎样使MDI的主窗体的图片充满client区(50分)

  • 主题发起人 主题发起人 apart
  • 开始时间 开始时间
A

apart

Unregistered / Unconfirmed
GUEST, unregistred user!
最大化时图片还是在那个位置,我已经把align设置为client了,image的strech也有设置了
 
image.align:=alClient;
 
不对呀,已经设了,stretch也设为true了,显示出来还是没有充满
 
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
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;

为什么我用这段代码窗体显示时总是显示之前的窗体的一部分,好像没有刷新好的样子,就是我在delphi下按F9后显示的窗体会带有屏幕上一段代码。

改用self.brush.bitmap := image1.bitmap.picture显示出来则是一片白色

我想用一张图片填充MDIform的空白区域,可以怎么做?
 
没人回吗???
 
用TCanvas.StretchDraw(const Rect: TRect; Graphic: TGraphic);来做,
画的区域为 ClientRect就是啦,至于Graphic就不用说了吧!!!!
也不要用一个WndProc吧,直接捕捉 WM_ERASEBKGND就行啦,
你上面的太难看了,菜鸟级的吧!!!!!!!
不过想法比较好,

呵呵`~~~~~~~~~~~~~~~~~~~~~~~~~~
 
也不用那麼麻煩了。Form的onCanResize 事件寫這個就可以了
procedure TFrmMain.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
image1.Top:=0;
image1.Left:=0;
image1.Height:=NewHeight;
Image1.Width :=NewWidth;
end;
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部