CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  GAME,图形处理/多媒体

窗体逶明????

楼主LCR2002(坚持到底)2005-08-01 17:35:16 在 Delphi / GAME,图形处理/多媒体 提问

我用上面的代码实现窗体逶明。  
  procedure   TForm2.SetTranSparent(form:   TForm);  
  var  
      AControl   :   TControl;  
      i,   Margin,   X,   Y,   CtlX,   CtlY   :   Integer;  
  begin  
   
    Margin   :=   (form.Width   -   form.ClientWidth)   div   2;  
    FullRgn   :=   CreateRectRgn(0,0,form.Width,form.Height);  
    X   :=   Margin;  
    Y   :=   form.Height   -   form.ClientHeight   -   Margin;  
    ClientRgn   :=   CreateRectRgn(X,Y,X   +   form.ClientWidth,   Y   +   form.ClientHeight   );  
    CombineRgn(FullRgn,FullRgn,ClientRgn,RGN_DIFF   );  
    for   i   :=   0   to   form.ControlCount   -   1   do  
    begin  
      AControl   :=   form.Controls[i];  
      if   (AControl   is   TWinControl   )   or   (AControl   is   TGraphicControl)   then  
      begin  
        with   AControl   do  
        begin  
          if   Visible   then  
          begin  
            CtlX   :=   X   +   Left;  
            CtlY   :=   Y   +   Top;  
            TransparentColor   :=   false;  
            CtlRgn   :=   CreateRectRgn(CtlX,CtlY,CtlX   +   Width,CtlY   +   Height   );  
            Brush.Style   :=   bsClear;  
            TextOut(Handle,10,10,'123',3);  
            CombineRgn(FullRgn,FullRgn,CtlRgn,   RGN_OR   );  
          end;  
        end;  
      end;  
    end;  
    SetWindowRgn(form.Handle,   FullRgn,   TRUE);  
  end;  
  现在的问题是:逶明窗体上放了Label控件,想让Label也是逶明的及只能看到文本!  
  注:背景播放的视频图象 问题点数:30、回复次数:9Top

1 楼LCR2002(坚持到底)回复于 2005-08-01 17:35:54 得分 0

注:背景是播放的视频图象Top

2 楼aloking(黑鲸)回复于 2005-08-01 22:56:23 得分 0

既然只是用lable,你不如直接放上个image1,上面textoutlabel文字Top

3 楼GenieWin(精灵太保)回复于 2005-08-22 23:21:48 得分 0

Label设成透明Top

4 楼zzlingaaa(小舟)回复于 2005-08-23 18:37:10 得分 0

窗体透明要这么多代码吗?TransparentColorValue和Color设置成一样的,TransparentColor:=true不就透明了.Top

5 楼hqhhh(枫叶)回复于 2005-08-23 18:38:26 得分 0

同意楼上的Top

6 楼zzlingaaa(小舟)回复于 2005-08-23 18:38:42 得分 0

label1.Transparent:=true就达到你的目的了啊,只要label1的字体颜色和窗体的颜色不一样就行了Top

7 楼yonny(会不会有一天把自己也做成EXE?)(答案:略)回复于 2005-08-23 22:52:21 得分 0

楼猪偶想问你,你那个明字前面那个字怎么读。Top

8 楼wudi_1982(向伴水学习|胃出血,住院中)回复于 2005-08-23 23:10:03 得分 0

自己看看吧,在D7和WINXP下测试通过的半透明窗体。  
  unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   ExtCtrls,   TeeProcs,   TeEngine,   Chart,   Series;  
   
  const  
   
      WS_EX_LAYERED   =   $80000;  
   
      AC_SRC_OVER   =   $0;  
   
      AC_SRC_ALPHA   =   $1;  
   
      AC_SRC_NO_PREMULT_ALPHA   =   $1;  
   
      AC_SRC_NO_ALPHA   =   $2;  
   
      AC_DST_NO_PREMULT_ALPHA   =   $10;  
   
      AC_DST_NO_ALPHA   =   $20;  
   
      LWA_COLORKEY   =   $1;  
   
      LWA_ALPHA   =   $2;  
   
      ULW_COLORKEY   =   $1;  
   
      ULW_ALPHA   =   $2;  
   
      ULW_OPAQUE   =   $4;  
   
   
  type  
      TForm1   =   class(TForm)  
          Chart1:   TChart;  
          Series1:   TBarSeries;  
          procedure   FormCreate(Sender:   TObject);  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
      end;  
   
   
      function   SetLayeredWindowAttributes(hwnd:HWND;   crKey:Longint;   bAlpha:byte;   dwFlags:longint   ):longint;   stdcall;   external   user32;//函数声明  
  var  
      Form1:   TForm1;  
   
  implementation  
   
  {$R   *.dfm}  
   
  procedure   TForm1.FormCreate(Sender:   TObject);  
  var   l:longint;  
   
  begin  
   
      l:=getWindowLong(Handle,   GWL_EXSTYLE);  
   
      l   :=   l   Or   WS_EX_LAYERED;  
   
      SetWindowLong   (handle,   GWL_EXSTYLE,   l);  
   
      SetLayeredWindowAttributes   (handle,   0,   150,   LWA_ALPHA);  
   
      Series1.AddBar(100,'',clBackground);  
   
  //第二个参数是指定透明颜色  
   
  //第二个参数为0则使用第四个参数设置alpha值,从0到255,其他的我不太清楚,因为没有api帮助  
   
  end;  
   
   
  end.  
  Top

9 楼wtg476(起飞)回复于 2005-08-24 08:49:05 得分 0

Form1.Brush.Style   :=   bsClear;  
      Form1.BorderStyle   :=   bsNoneTop

相关问题

  • 透明窗体
  • 窗体透明
  • 半透明窗体?
  • 98窗体透明
  • 半透明窗体.
  • VB中的透明窗体。
  • 关于透明窗体
  • 透明窗体的作法
  • 如何让窗体"透明"
  • 关于 透明的窗体

关键词

  • series
  • 窗体
  • fullrgn
  • ctlx
  • ctly
  • acontrol
  • ulw
  • alpha
  • 逶明
  • lwa

得分解答快速导航

  • 帖主:LCR2002

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo