鱼C论坛

 找回密码
 立即注册
查看: 4168|回复: 26

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

[复制链接]
发表于 2014-11-16 14:00:39 | 显示全部楼层 |阅读模式
100鱼币
像这样一个窗口程序  在上面加上了一个iMage控件  然后在里面加一些其他控件  怎么让image范围内的可见, 里面的控件也都可以用  但是其他部分都不 可见 ,包括那些最大化最小化 关闭都不可见   
如果可以实现  但是我的方法或者想法不对  求大家告诉我怎么做到我说的那样的效果 感激不尽.......

QQ截图20141116135115.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-16 15:19:18 | 显示全部楼层
在borderstyle属性选择bsnone即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-16 15:40:51 | 显示全部楼层
SetWindowPos(handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW)//这句是窗口置顶
下面在对象浏览器操作
label1 .Transparent属性设为true    //这个设置label 的背景透明
borderstyle设置bsnone 这句设置无边框  ,有问题继续问我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-16 15:42:50 | 显示全部楼层
你这个问题还没解决啊 ,怎么又是你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-17 14:51:11 | 显示全部楼层
edit 控件没法设置透明  不过你不需要的时候可以设置控件不可见  ,触发热键才设置可见
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-17 19:58:59 | 显示全部楼层
qq351317878 发表于 2014-11-16 15:40
SetWindowPos(handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW)//这句是窗口置顶
下面在对象浏 ...

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-17 20:36:17 | 显示全部楼层

说得不对    还望指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-17 20:44:33 | 显示全部楼层
qq351317878 发表于 2014-11-17 20:36
说得不对    还望指教

我是说这头像,还是换柯南吧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-17 20:56:14 | 显示全部楼层
拈花小仙 发表于 2014-11-17 20:44
我是说这头像,还是换柯南吧~

我还以为我上面说错了....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-21 17:07:45 | 显示全部楼层
有个简单的方法,就是把图片的大小读出后,用这个大小设置窗口的大小,要是把窗口的框架属性隐藏
要是你做的是软件启动画面请看下面这个
如何用DELPHI7制作程序启动封面
http://wenku.baidu.com/link?url=YGZC_hfXzSjaV40Iuk1LWAFgBMJT0TFdZ5WGTnX2ChWT7zaXG_j9ULB6AA0VHgrqDE0o1yTJtQOR27Ji5AL_7GbevA6RfU8z7XT7pCVoed_
是的话请给分:titter:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-24 07:51:58 | 显示全部楼层
可以实现的,晚上下班回来我给您做个例子程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-24 20:27:56 | 显示全部楼层
xcrane 发表于 2014-11-24 07:51
可以实现的,晚上下班回来我给您做个例子程序。

求 指教啊  感激不尽啊.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-24 20:28:46 | 显示全部楼层
liyf 发表于 2014-11-21 17:07
有个简单的方法,就是把图片的大小读出后,用这个大小设置窗口的大小,要是把窗口的框架属性隐藏
要是你做 ...

打不开啊  什么东东
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-24 21:13:59 | 显示全部楼层
首先上来一个编译后的截图效果,不知道是不是楼主想要的结果:

QQ截图20141124211115.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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

供参考,希望对您有所帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-24 21:27:46 | 显示全部楼层
还有一点需要注意的:

QQ截图20141124212711.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-25 20:08:06 | 显示全部楼层
  你说的这个只对规则形状的图片有用啊  要是不规则的图片就不行啊  比如五角星的 形状  空缺的部分 就是白色的  根本不行  要怎么样把不规则的  空白全部设置成透明呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-25 20:10:52 | 显示全部楼层
不错不错 看了上面的人的解答。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-27 06:24:28 From FishC Mobile | 显示全部楼层
不规则图形就麻烦一些,需要手绘窗体。回头我再给你写个例子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-27 21:47:31 | 显示全部楼层
本帖最后由 xcrane 于 2014-11-27 21:48 编辑

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

圆形窗体:
2.png
椭圆形窗体:

3.png
正方形窗体:
4.png
正方形窗体:

5.png


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

6.png



代码实现:
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:array[0..12]of TPoint;
begin
  Star[0] := Point(200,0);
  Star[1] := Point(180,150);
  Star[2] := Point(140,300);
  Star[3] := Point(100,450);
  Star[4] := Point(720,450);
  Star[5] := Point(680,300);
  Star[6] := Point(660,270);
  Star[7] := Point(620,200);
  Star[8] := Point(590,180);
  Star[9] := Point(580,150);
  Star[10] := Point(590,30);
  Star[11] := Point(490,0);
  rgn := CreatePolygonRgn(star,11,WINDING);
  SetWindowRgn(Self.Handle,rgn,True);
end;

end.


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 05:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表