程序界面设计 ( 积分: 50 )

  • 主题发起人 主题发起人 lsz100
  • 开始时间 开始时间
L

lsz100

Unregistered / Unconfirmed
GUEST, unregistred user!
程序做好了,窗体上有很多控件,现在我有一些窗体背景图片,要放上去。问题来了,窗体上的控件把背景挡住了一部分,不好看。能不能控件把背景透明出来呀?
 
没人做过吗?
 
没人做过吗?
 
可以这样思维,建2个窗体,一个放图片(假主窗体),把所用控件放到另一个窗体上,然后使这个窗体透明就很容易了[:D],然后把这个放到主窗体上就OK了。

工程文件里是这样的:
begin
Application.Initialize;
Application.CreateForm(TfrmShell, frmShell);
Application.Run;
end.

使frmShell窗体透明就可以了
frmShell.AlphaBlendValue := tbAlpha.Position; //调节透明度

frmShell窗体的单元文件
unit UShell;
interface

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

type
TfrmShell = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
procedure WM_Move(var Msg:TMessage);message WM_MOVE;
{ Public declarations }
end;

var
frmShell: TfrmShell;

implementation

uses UMain;

{$R *.dfm}procedure TfrmShell.FormCreate(Sender: TObject);
begin
frmMain:=TfrmMain.Create(Self);//假的主窗体,放你的图片用
frmMain.Show;
FormResize(Self);
end;

procedure TfrmShell.FormResize(Sender: TObject);
begin
frmMain.Left:= Left + ((Width - ClientWidth) shr 1);
frmMain.Top := Top + (Height - ClientHeight-4);
frmMain.Width := ClientWidth;
frmMain.Height := ClientHeight;
end;

procedure TfrmShell.WM_Move;
begin
inherited;
if Assigned(frmMain) then FormResize(Self);
end;
 
你的这个思路是好的,问题是我要给所有的子窗体也加入背景图片呀[?]
 
有没有办法让图片放在所有控件的上面,然后图片透明。
 
图片放控件上是不行的,会把后面的控件都盖住,你无法操作的。
控件透明的好象不多,我这方法可以任意调节透明度,对所有的控件都有效。
子窗体的思路和我这个一样,就是每个子窗体实际都是2个窗体构成,一个是放控件可以调节透明,另一个是放图片的。
 
但是这样很难看呀,要么控件不清楚,要么背景不清楚。[?]
 
如果控件很多,功能也很多那么建议用frame作,这样在frame下进行透明就比较容易
 
可以将控件 用TImage代替,,用photoshop将背景图片切块下来,装载到image里面,然后做~!
 
如果控件很多,功能也很多那么建议用frame作,这样在frame下进行透明就比较容易
这个有点不明白,能说详细点的吗?和FORM比有什么不同。
 
UP8888888888888888
 
多人接受答案了。
 
后退
顶部