关于窗体透明的做法

1.在Delphi中,设置窗体的AlphaBlend := true;AlphaBlendValue := 0-255; AlphaBlendValue越小窗体的透明度就越高。这种方法将会使窗体和窗体中控件都变成透明。
2.在Delphi中,设置TransparentColor := True与TransparentColorValue := TForm.Color, 则窗体变成透明,控件不透明。
3.使用API控制指定区域透明,如下,通过不绘制窗体四角的方法,来使四角变得圆滑透明,可在窗体Resize时调用。

procedure TFormPadMain.SetFormTransparent;
var
Rgn: HRGN;
begin
Rgn := CreateRoundRectRgn(0, 0, Width, Height, 11, 11);
SetWindowRgn(Handle, Rgn, True);
end;

-----------------------------------------------------------------------------------------------------------

DELPHI实现透明以及半透明窗体

上一篇《在DELPHI中获得磁盘容量》
下一篇《在DELPHI中编程生成ACCESS数据库文件并创建指向此连接的ODBC数据源》

  在QQ中,我可以调节面板的透明度。如果我们自己编程,应该如何实现呢?
   (一)半透明窗体
   在windows2000以及后续产品中下增加了一些API,可以轻易的实现半透明的窗体,源程序如下:
  interface
  uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
  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)
   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, 180, LWA_ALPHA);
  //第二个参数是指定透明颜色
  //第二个参数为0则使用第四个参数设置alpha值,从0到255
  end;
  end.
   (二) 透明窗体的实现
   将一个FORM变成透明的实质性手段就是拦截CMEraseBkgnd消息。
  unit Utransform; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
  type TForm1 = class(TForm)
   private { Private declarations }
   public { Public declarations }
   PROCEDURE CMEraseBkgnd(var Message:TWMEraseBkgnd);Message WM_ERASEBKGND;
  end;
  var Form1: TForm1;
  implementation
  {$R *.DFM}
  procedure TForm1.CMEraseBkgnd(var Message: TWMEraseBkgnd);
  begin
  brush.style:=bsClear;
  end;
  procedure TForm1.FormCreate(Sender: TObject);
  begin
   Form1.Brush.Style := bsClear;//如果只拦截消息,没有这里的设置,窗内的标题栏一样会显示 Form1.BorderStyle := bsNone
  end;
  procedure TForm1.BitBtn1Click(Sender: TObject);
  begin
   close;
  end;(王朝网络 wangchao.net.cn)

时间: 2024-10-26 19:17:15

关于窗体透明的做法的相关文章

设置窗体透明C#代码

上个示例是C#调用windows api 在原来代码上加入窗体透明,控件不透明代码: 1 using System; 2 using System.Runtime.InteropServices; 3 using System.Windows.Forms; 4 5 namespace HoverTreeWinForm 6 { 7 public partial class FormHewenqi : Form 8 { 9 10 /// <summary> 11 /// 使窗体透明 by 何问起

Qt之窗体透明 (三种不同的方法和效果)

关于窗体透明,经常遇到,网上的资料倒不少,也不知道写的时候是否验证过,很多都不正确...今天就在此一一阐述! 以下各效果是利用以前写过的一个小程序作为示例进行讲解!(代码过多,贴主要部分) 正常状态 效果如下: 这部分代码就不贴了(主要讨论透明效果). 一.全透明 setWindowOpacity(0.5); 取值范围为:0.0 - 1.0,默认值为1.0,全透明为0.0,不透明则为1.0. 效果如下: 显而易见,窗体及其子窗体全部透明! 二.主窗体透明(子窗体不透明) 1.主窗体采用背景色 s

透明窗体透明窗体 控件正常显示

//TransparentFrm透明窗体透明窗体 控件正常显示 {以图片的形状作为窗体形态}{使窗体透明 透明的只剩下个控件} // 调用 setFormTransParent(Form1); procedure setFormTransParent(Form:TForm); begin Form.BorderStyle:=bsNone; Form.TransparentColor:=True; Form.TransparentColorValue:=20; Form.Color:=Form.T

delphi 窗体透明

TransparentColor:=true;    TransparentColorValue:=clFuchsia;    Color:= TransparentColorValue;    BorderStyle:=bsNone; delphi 窗体透明http://hi.baidu.com/duduppp/item/f347df3a16dbb9607c034bd5 来自为知笔记(Wiz) delphi 窗体透明

VC窗体透明而控件不透明以及Static文本背景透明方法

出自http://my.oschina.net/ypimgt/blog/60951 优点:    1.Dialog 窗体完全透明.     2. 窗体上的控件不透明. DC 绘制的图形不透明.     3. 拖动窗体上用 DC 绘制的图形可以移动窗体. 缺点:     1. 窗体设置透明使用是掩码颜色,所以在窗体上用 DC 绘图的过程当中如果采用了和透明掩码颜色相同的颜色将不会显示出来.     2. 如果将 Border 属性设置成了 NONE ,那么想通过响应 WM_NCHITEST 消息来

android 窗体透明的,黑暗度等的设置技巧

设置透明度(这是窗体本身的透明度,非背景) 1 WindowManager.LayoutParams lp=getWindow().getAttributes(); 2 lp.alpha=0.3f; 3 getWindow().setAttributes(lp); alpha在0.0f到1.0f之间.1.0完全不透明,0.0f完全透明 设置黑暗度 1 WindowManager.LayoutParams lp=getWindow().getAttributes(); 2 lp.dimAmount

Qt之窗体透明

简述 关于窗体透明,经常遇到,下面我们针对常用的透明效果进行讲解: 全透明(主窗体.子窗体均透明) 主窗体透明(子窗体不透明) 子窗体透明(主窗体不透明) 简述 正常状态 全透明 效果 源码 主窗体透明 效果 源码 子窗体透明 更多参考 正常状态 正常状态下,效果如下: 全透明 这里,我们可以透过整个窗体观看到桌面的背景. 效果 源码 设置窗口的透明度,如下: setWindowOpacity(0.5); 透明度取值范围:0.0(全透明) - 1.0(不透明),默认值为1.0. 主窗体透明 这里

WPF如何实现窗体透明——Opacity

我们知道,在WPF通过设置窗体或者控件的"Opacity"属性,可以控制透明度.但是要实现整个窗体的透明化,光设置"Opacity"是不够的,还需要在WPF窗体或者页面的Xaml代码中定义如下: <Window x:Class="BarCodeSystem.TechRoute.TechRoute.TechRouteCheckPerson_Window" xmlns="http://schemas.microsoft.com/win

C# 在windows form实现不规则窗体&amp;透明窗体

private void Form1_Load(object sender, EventArgs e) { this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.BackColor = Color.Red; this.TransparencyKey = this.BackColor; } http://blog.csdn.net/haukwong/article/details/6853874