我的下划线 发表于 2014-11-16 14:00:39

delphi怎么让窗口其他的部分不可见

像这样一个窗口程序在上面加上了一个iMage控件然后在里面加一些其他控件怎么让image范围内的可见, 里面的控件也都可以用但是其他部分都不 可见 ,包括那些最大化最小化 关闭都不可见   
如果可以实现但是我的方法或者想法不对求大家告诉我怎么做到我说的那样的效果 感激不尽.......

cyrs 发表于 2014-11-16 15:19:18

在borderstyle属性选择bsnone即可

qq351317878 发表于 2014-11-16 15:40:51

SetWindowPos(handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW)//这句是窗口置顶
下面在对象浏览器操作
label1 .Transparent属性设为true    //这个设置label 的背景透明
borderstyle设置bsnone 这句设置无边框,有问题继续问我

qq351317878 发表于 2014-11-16 15:42:50

你这个问题还没解决啊 ,怎么又是你

qq351317878 发表于 2014-11-17 14:51:11

edit 控件没法设置透明不过你不需要的时候可以设置控件不可见,触发热键才设置可见

拈花小仙 发表于 2014-11-17 19:58:59

qq351317878 发表于 2014-11-16 15:40
SetWindowPos(handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW)//这句是窗口置顶
下面在对象浏 ...

{:7_138:}

qq351317878 发表于 2014-11-17 20:36:17

拈花小仙 发表于 2014-11-17 19:58


说得不对    还望指教{:5_92:}

拈花小仙 发表于 2014-11-17 20:44:33

qq351317878 发表于 2014-11-17 20:36
说得不对    还望指教

{:7_145:}我是说这头像,还是换柯南吧~

qq351317878 发表于 2014-11-17 20:56:14

拈花小仙 发表于 2014-11-17 20:44
我是说这头像,还是换柯南吧~

我还以为我上面说错了....

liyf 发表于 2014-11-21 17:07:45

有个简单的方法,就是把图片的大小读出后,用这个大小设置窗口的大小,要是把窗口的框架属性隐藏
要是你做的是软件启动画面请看下面这个
如何用DELPHI7制作程序启动封面
http://wenku.baidu.com/link?url=YGZC_hfXzSjaV40Iuk1LWAFgBMJT0TFdZ5WGTnX2ChWT7zaXG_j9ULB6AA0VHgrqDE0o1yTJtQOR27Ji5AL_7GbevA6RfU8z7XT7pCVoed_
是的话请给分:titter:

xcrane 发表于 2014-11-24 07:51:58

可以实现的,晚上下班回来我给您做个例子程序。

我的下划线 发表于 2014-11-24 20:27:56

xcrane 发表于 2014-11-24 07:51
可以实现的,晚上下班回来我给您做个例子程序。

求 指教啊感激不尽啊.

我的下划线 发表于 2014-11-24 20:28:46

liyf 发表于 2014-11-21 17:07
有个简单的方法,就是把图片的大小读出后,用这个大小设置窗口的大小,要是把窗口的框架属性隐藏
要是你做 ...

打不开啊什么东东

xcrane 发表于 2014-11-24 21:13:59

首先上来一个编译后的截图效果,不知道是不是楼主想要的结果:

xcrane 发表于 2014-11-24 21:21:02

我是在win7 64位和Delphi xe3下实现的。
具体实现方法:

(1) 在窗体上添加一个image控件,依次设置属性:Align属性为alclient,Picture属性中选择想要当背景的图片。
(2) 调节窗体Form的大小为图片的大小。
(3) 设置窗体From的属性:BorderStyle属性为bsNone。
(4) 运行,就能达到您要的效果啦。
(5) 我没有权限上传附件,我把工程放到百度网盘上了,网址:http://pan.baidu.com/s/1mgl3few

供参考,希望对您有所帮助。

xcrane 发表于 2014-11-24 21:27:46

还有一点需要注意的:

我的下划线 发表于 2014-11-25 20:08:06

你说的这个只对规则形状的图片有用啊要是不规则的图片就不行啊比如五角星的 形状空缺的部分 就是白色的根本不行要怎么样把不规则的空白全部设置成透明呢?

Angel丶L 发表于 2014-11-25 20:10:52

不错不错 看了上面的人的解答。

xcrane 发表于 2014-11-27 06:24:28

不规则图形就麻烦一些,需要手绘窗体。回头我再给你写个例子

xcrane 发表于 2014-11-27 21:47:31

本帖最后由 xcrane 于 2014-11-27 21:48 编辑

希望这次的回答是您想要的结果。
如果是的话,请把鱼币给我啊,呵呵,正是缺钱的时候~~
谢谢。

圆形窗体:

椭圆形窗体:


正方形窗体:

正方形窗体:




想要什么样,就有什么样的窗体。





代码实现:
unit Unit3;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
Vcl.Imaging.pngimage, Vcl.Menus;

type
TForm3 = class(TForm)
    img1: TImage;
    btn1: TButton;
    edt1: TEdit;
    pm1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    procedure btn1Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;

var
Form3: TForm3;


implementation

{$R *.dfm}

procedure TForm3.btn1Click(Sender: TObject);
begin
Close;
end;


procedure TForm3.N1Click(Sender: TObject);      //圆形
var
Rect:TRect;
rgn:THandle;
begin
rgn := CreateEllipticRgn(0,0,400,400);
SetWindowRgn(Self.Handle,rgn,True);
end;

procedure TForm3.N3Click(Sender: TObject);
begin
Close;
end;

procedure TForm3.N4Click(Sender: TObject);   //椭圆形
var
Rect:TRect;
rgn:THandle;
begin
rgn := CreateEllipticRgn(0,0,500,400);
SetWindowRgn(Self.Handle,rgn,True);
end;

procedure TForm3.N6Click(Sender: TObject);   //正方形
var
Rect:TRect;
rgn:THandle;
begin
rgn := CreateRectRgn(0,0,400,400);
SetWindowRgn(Self.Handle,rgn,True);
end;


procedure TForm3.N7Click(Sender: TObject);    //长方形
var
Rect:TRect;
rgn:THandle;
begin
rgn := CreateRectRgn(0,0,450,320);
SetWindowRgn(Self.Handle,rgn,True);
end;

procedure TForm3.N9Click(Sender: TObject);    //任意图形
var
rgn:THandle;
Star:arrayof TPoint;
begin
Star := Point(200,0);
Star := Point(180,150);
Star := Point(140,300);
Star := Point(100,450);
Star := Point(720,450);
Star := Point(680,300);
Star := Point(660,270);
Star := Point(620,200);
Star := Point(590,180);
Star := Point(580,150);
Star := Point(590,30);
Star := Point(490,0);
rgn := CreatePolygonRgn(star,11,WINDING);
SetWindowRgn(Self.Handle,rgn,True);
end;

end.


页: [1] 2
查看完整版本: delphi怎么让窗口其他的部分不可见