如何做窗体背景?(在线等待)

star_of_light 2002-08-26 09:20:07
在Delphi中如何将一幅图片做成窗体的背景,就象壁纸一样。
...全文
58 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
蝈蝈太阳 2002-08-26
  • 打赏
  • 举报
回复
UP
TheTop 2002-08-26
  • 打赏
  • 举报
回复
self.Brush.Bitmap:=image1.Picture.Bitmap;
ztg 2002-08-26
  • 打赏
  • 举报
回复
最简单的方法:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
var
bmp : TBitmap;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin
bmp := TBitmap.Create;
bmp.LoadFromFile('D:\vsd\ToolBar-Background.bmp');
Brush.Bitmap := bmp;

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
bmp.Free;
end;

end.
zhxzhx 2002-08-26
  • 打赏
  • 举报
回复
可以放个图片控件,这样就可以了
simonzone 2002-08-26
  • 打赏
  • 举报
回复
up
renzhm 2002-08-26
  • 打赏
  • 举报
回复
如果是普通窗体,请用楼上的各位方法,若试MDI窗体:

procedure TMainFrm.DrawStretched;//拉伸
var
CR: TRect;
begin
GetWindowRect(ClientHandle, CR);
StretchBlt(FDrawDC, 0, 0, CR.Right, CR.Bottom,
imgMain.Picture.Bitmap.Canvas.Handle, 0, 0,
imgMain.Picture.Width, imgMain.Picture.Height, SRCCOPY);
end;

procedure TMainFrm.DrawCentered;//局中
var
CR: TRect;
begin
GetWindowRect(ClientHandle, CR);
with imgMain do
BitBlt(FDrawDC, ((CR.Right - CR.Left) - Picture.Width) div 2,
((CR.Bottom - CR.Top) - Picture.Height) div 2,
Picture.Graphic.Width, Picture.Graphic.Height,
Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
end;

procedure TMainFrm.DrawTiled;//平铺
var
Row, Col: Integer;
CR, IR: TRect;
NumRows, NumCols: INteger;

begin
GetWindowRect(ClientHandle, CR);
IR := imgMain.ClientRect;
NumRows := CR.Bottom div IR.Bottom;
NumCols := CR.Right div IR.Right;
with imgMain do
for Row :=0 to NumRows+1 do
for Col :=0 to NumCols+1 do
BitBlt(FDrawDC, Col*Picture.Width, Row*Picture.Height,
Picture.Width, Picture.Height,
Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
end;

procedure TMainFrm.ClientWndProc(var Message: TMessage);
begin
case Message.Msg of
WM_EraseBKGnd:
begin
CallWindowProc(FoldClientProc, ClientHandle, Message.Msg,
Message.WParam, Message.LParam);
FDrawDC := TWMEraseBKGnd(Message).DC;
DrawStretched; //拉伸
//DrawCentered; //居中
//DrawTiled; //平铺
Message.Result := 1;
end;
WM_VSCROLL, WM_HSCROLL:
begin
Message.Result := CallWindowProc(FOldClientProc, CLientHandle,
Message.Msg, Message.WParam, Message.LParam);
InvalidateRect(ClientHandle, nil, True);
end;
else
Message.Result := CallWindowProc(FOldClientProc, CLientHandle,
Message.Msg, Message.WParam, Message.LParam);
end;
end;

procedure TMainFrm.FormCreate(Sender: TObject);
begin
FNewClientProc := MakeObjectInstance(ClientWndProc);
FOldClientProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
SetWindowLong(ClientHandle,GWL_WNDPROC,LongInt(FNewClientProc));
end;
xyue 2002-08-26
  • 打赏
  • 举报
回复
给我也发一个好吗 ? 多谢
daodao1981@21cn.com
l_xiaofeng 2002-08-26
  • 打赏
  • 举报
回复
usu@163.com给我一个吧.
  • 打赏
  • 举报
回复
发出去了
star_of_light 2002-08-26
  • 打赏
  • 举报
回复
我的邮箱是:hexinghzl@163.com
oracle_lover 2002-08-26
  • 打赏
  • 举报
回复
放一个Image控件,它的Picture属性选你要的图片。把它的大小调到窗体一样大。
其它控件都放到它上面。
  • 打赏
  • 举报
回复
给个e-mail 给你个文件

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧