编程实现窗体的半透明效果

C#实现窗体半透明与透明效果的技巧 在C#中,窗体的Opacity属性是控制窗体透明度的关键。通过修改此属性的值,可以轻松实现窗体的透明或半透明效果。Opacity属性是一个介于0到1之间的双精度浮点数,其中0表示完全透明(即不可见),而1则表示完全不透明(即完全可见)。透明度的调整为用户提供了更多的视觉体验和交云空间,尤其是在需要焦点窗体的场景中。在C#中,创建全透明窗体或半透明窗体是一个常见需求,它能够帮助开发者构建更加丰富和吸引人的用户界面。Form类的AllowTransparency属性是实现这一功能的关键。 阅读详情
编程实现窗体的半透明效果 作者:罗蔷 发布时间:2001/03/16
 
文章摘要:
  大家都知道Windows 2000支持淡入淡出的窗体显示效果。如何让自己的应用程序也具备这种效果呢?下文对此问题做出了解答。
       

正文: 



编程实现窗体的半透明效果

  

  如果你不是使用Windows2000+Delphi编程的话,我不想浪费你的时间。如果是,请继续。
  大家都知道Windows 2000支持淡入淡出的窗体显示效果。如何让自己的应用程序也具备这种效果呢?前两天研究FormContainer的Form显示效果时(注:FormContainer是一个强大的Delphi特效处理控件,有兴趣的朋友可以访问http://www.billeniumsoft.com/),得高人告知,核心API函数就是SetLayeredWindowAttributes。
  要实现淡入淡出效果,就需要实现窗口的可调整的透明效果。传统的Windows应用程序想实现透明效果,一般来说需要处理自己的窗口的WM_Paint消息,程序员需要GetDC获取屏幕的HDC,调用BitBlt函数将屏幕将要被覆盖的区域拷贝到内存的TBitmap对象中,然后对该Tbitmap的ScanLine二维数组逐象素的修改rgbtRed、rgbtGreen和rgbtBlue值。天哪,实在是太麻烦了。
  Windows2000的API库中终于提供了半透明的窗体显示效果支持(虽然不是很完善)。要实现半透明的窗口效果,首先需要给创建的窗口添加WS_EX_LAYERED 扩展属性,这是一个新的窗口扩展属性,Delphi5并没有定义相应的常量和SetLayeredWindowAttributes函数,我们需要手工声明。

function SetLayeredWindowAttributes(Handle: HWND;
  COLORKEY: COLORREF; Alpha: BYTE; Flags: DWORD): Boolean; stdcall; external 'USER32.DLL';

Const
  WS_EX_LAYERED = $80000;
  LWA_ALPHA = 2;

  我们调用GetWindowLong函数获取当前窗口的扩展属性,并调用SetWindowLong函数将新的WS_EX_LAYERED窗口扩展属性添加进去。

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE) or WS_EX_LAYERED);
end;

  现在我们的窗口已经可以调用SetLayeredWindowAttributes函数,通过设置该函数的Alpha参数,我们就可以看到窗口的效果的变化。

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetLayeredWindowAttributes(Form1.Handle, 0, 180, LWA_ALPHA);
end;

  以下的VCL控件代码封装了SetLayeredWindowAttributes函数,编程时动态改变AlphaValue值,您就可以看到窗口的透明效果了。控件屏蔽了设计期的显示效果,如果读者愿意可以改为设计期效果可见,不过那样的话,一不小心,您可能就会找不着你要设计的窗体了 8-)

unit TranForm; {DragonPC 2001.2.21 }

interface

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

type
  TTranForm = class(TComponent)
  private
   FAlphaValue : integer ;
   FParentFormHandle : HWND ;
  procedure SetFAlphaValue(Alpha:integer) ;
   protected
   procedure UpdateDisplay ;
public
  constructor Create(AOwner: TComponent); override;
published
  property AlphaValue : integer read FAlphaValue write SetFAlphaValue ;
end;

procedure Register;

function SetLayeredWindowAttributes(Handle: HWND; COLORKEY: COLORREF;
  Alpha: BYTE; Flags: DWORD): Boolean; stdcall; external 'USER32.DLL';

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TTranForm]);
end;

procedure TTranForm.SetFAlphaValue(Alpha: integer);
  begin
   if (Alpha >= 0) and (Alpha < 256) then begin
   FAlphaValue := Alpha ;
   UpdateDisplay() ;
  end;
end;

procedure TTranForm.UpdateDisplay;
begin
 if (csDesigning in ComponentState) then Exit ;
 SetLayeredWindowAttributes(FParentFormHandle, 0, FAlphaValue, 2);
end;

constructor TTranForm.Create(AOwner: TComponent);
begin
  inherited;
  if (csDesigning in ComponentState) then Exit;
  FAlphaValue := 255 ;
  FParentFormHandle := TForm(AOwner).Handle ;
  SetWindowLong(FParentFormHandle,
         GWL_EXSTYLE,
         GetWindowLong(FParentFormHandle, GWL_EXSTYLE) or WS_EX_LAYERED);
end;

end.

  谢谢您的莫大耐心得以看完此文,此文纯粹本着赚取china-pub"假币"目的所写,万一各位看官有任何的疑问,欢迎信至dragonpc@21cn.com,谢谢。


作者会员名:dragonpc

 
VB动态半透明窗体实现指南 本文还有配套的精品资源,点击获取 简介:在VB编程中,创建动态半透明窗体可以提升应用程序界面的视觉吸引力和交互性。本文将介绍如何通过设置窗体的Alpha通道、处理Paint事件、使用Timer控件、处理鼠标事件以及自定义窗体边框样式来实现这一效果。特别指出,实现这种窗体需要考虑系统兼容性和性能问题,并给出了一些代码实现的思路。 1. VB动态半透明窗体的设计基础 ... 阅读详情

相关推荐

C++ 透明半透明效果设置

C++ 透明半透明效果设置 记得自行在文件夹中添加背景图片和一张角色图片

Mybatis第三课动态语句拼接

MyBatis课程三

m0_38022392的博客 196

用JavaScript实现网页里的Window7半透明窗体

用JavaScript实现网页里的Window7半透明窗体

浅谈CSS3新特性——线性渐变linear-gradient

渐变:两种或多种颜色之间的平滑过渡。 线性渐变是多种颜色沿渐变线过渡。 渐变的实现由两部分组成:渐变线和色标。渐变线用来控制发生渐变的方向;色标包含一个颜色值和一个位置,用来控制渐变的颜色变化。浏览器从每个色标的颜色淡出到下一个,以创建平滑的渐变,通过确定多个色标可以制作多色渐变效果。

筱葭的博客 1519

ADSP-21565的SigmaStudio图形化编程实战:从FW工程改造到音频通道打通

本文详细介绍了如何将ADSP-21569的SigmaStudio图形化编程固件工程改造,以适配ADSP-21565的纯片内SRAM内存架构。通过修改内存映射和链接文件,打通了音频输出通道,并成功利用SigmaStudio进行图形化编程,实现了从白噪声生成到音频输出的完整验证流程。

weixin_29169505的博客 379

私有化大模型部署:企业AI应用的核心架构

私有化大模型部署不是“一次性项目”,而是企业AI的“长期主义”投资——它需要企业投入时间、金钱和精力,但回报是数据安全、定制化能力、核心竞争力的提升。就像“自家厨房”一样,私有化大模型可能初期麻烦,但一旦搭建起来,就能为企业“做”出符合自己口味的“特色菜”,而这些“特色菜”,正是企业在激烈竞争中的“护城河”。愿你能构建属于自己的“AI大脑”,让技术真正赋能业务,让复杂变简单,让深奥变通透。附录:私有化大模型部署架构图(注:可根据企业需求调整,此为通用架构)

AI天才研究院 1020

background:rgba(red,green,blue,alphavalue)

设置背景透明度 没有使用rgba header div.left_top{ /*background: rgba(255,255,255,0.1);*/ overflow: hidden; border: 2px solid #4F4844; height: 109px;

Blog 2733

基于Meteoinfo与TrajStat的后向轨迹聚类分析实战:从数据准备到可视化制图

本文详细介绍了基于Meteoinfo与TrajStat进行后向轨迹聚类分析的完整实战流程。从Java环境配置、Meteoinfo软件与TrajStat插件安装,到精准获取NOAA气象数据、设置参数进行批量轨迹计算,再到利用聚类分析提炼主要气流路径,并最终完成专业地图可视化与制图。文章旨在帮助环境与气象研究者快速掌握从数据准备到成果输出的全链路操作。

p4q5r6s7t的博客 804

Sass:RGB颜色函数-Red()、Green()、Blue()函数

Red() 函数 red() 函数非常简单,其主要用来获取一个颜色当中的红色值。假设有一个 #f36 的颜色,如果你想得到 #f36 中的 red 值是多少,这个时候使用 red() 函数就能很简单获取。 >> red(#f36) 255 得到的值是”255”。 Green() 函数 green() 函数和 red() 函数一样,用来获取某一个颜色值中 gre...

weixin_33698043的博客 1631

新装Win10/Win11后VMware虚拟机连不上网?手把手教你排查‘网络信息不可用’(从服务检查到网段配置)

本文详细介绍了在Windows 10/11系统上安装VMware Workstation后虚拟机无法联网的排查方法。从检查VMware NAT Service、DHCP Service等关键服务状态,到重置虚拟网络编辑器配置,再到内核设备驱动问题解决,手把手教你解决‘网络信息不可用’问题。特别针对VMCI驱动故障提供了实用解决方案,帮助用户快速恢复虚拟机网络连接。

weixin_28736335的博客 769

figma MCP + cursor如何将设计稿生成前端页面

Figma MCP配置与代码生成指南 本文详细介绍了如何在Cursor中配置Figma MCP(多上下文处理器)的完整流程:从获取Figma API密钥、设置MCP服务器配置,到添加代码生成规则。关键步骤包括生成Figm a个人访问令牌、配置cursor settings文件、启用MCP服务,以及设置代码规则(包含TypeScript/Vue技术栈规范、BEM命名规则等)。最后提供了将Figma设计稿转化为Vue页面的prompt模板,涵盖文件结构、图片处理、样式规范等具体要求,确保生成代码与设计稿高度一致

weixin_45644355的博客 2905

ARGB色彩模式

ARGB—Alpha,Red,Green,Blue         一种色彩模式,也就是RGB色彩模式附加上Alpha(透明度)通道,常见于32位位图的存储结构。         Alpha,图像通道,全强度为FF,表示无透明度,即不透明;无强度为00 ,表示全透明。因此,透明像素颜色值为 Alpha位-00,Red位、Green位、Blue位为任意值,例如:0x00FFFFFF为透明色,即透

Howie的专栏 8727

【YOLOv11改进- 主干网络】YOLOv11+RepViT: 从ViT的角度重新审视Mobile的CNN助力YOLOv11有效涨点;

本文给大家带来的改进内容是在YOLOv11中更换主干网络为RepViT,助力YOLOv11有效涨点,论文通过集成轻量级 ViT 的高效架构设计,逐步增强了标准轻量级 CNN(即 MobileNetV3)的移动友好性。这最终产生了一个新的纯轻量级 CNN 系列的主干网络。

qq_41304809的博客 785

编程实现窗体的半透明效果 (转)

编程实现窗体的半透明效果 (转)[@more@]编程实现窗体的半透明效果 作者:罗蔷 发布时间:2001/03/16 文章摘要:   大家都知道windows 2000支持淡入淡出的窗体显示效果。如何让自己的应用程序也具备这...

csd3176的博客 138

瑞芯微RK3588/RK3576平台采集BT1120(fpga)驱动调试记录

本文介绍了在RK3576/RK3588平台上采集FPGA传输的BT1120数据的方法。主要内容包括:1)硬件连接需确认管脚复用和图像格式(通常为uyvy_2x8);2)设备树配置要点,如I2C总线设置、BT1120模式指定等;3)驱动适配注意事项,包括时钟极性、分辨率格式等关键参数;4)测试方法,通过media-ctl和v4l2-ctl工具验证数据采集。文中特别指出RK3576和RK3588配置的通用性,并提供了常见问题的排查思路。

bingdund的博客 913

12S BMS 核心设计:基于 STM32H743+BQ34Z100 的 SOC/SOH 实现与全链路技术解析(上)

本文详细介绍了基于STM32H743和BQ34Z100的12串锂电池管理系统(BMS)设计。该系统采用主控制器+专用电量监测计架构,可实现高精度SOC(±1%)和SOH(±2%)估算,支持36V-50.4V电压范围。硬件设计包括电压/电流采样、温度测量、保护电路等模块,软件实现基于HAL库开发,采用DMA方式提高I2C通信效率。系统通过TI专利的ImpedanceTrack™算法实现三维融合估算,并具备完善的保护功能。该设计适用于电动工具、轻型电动车等中功率设备,具有精度高、响应快。

bother3000的博客 1392

VB无所不能之四:制作透明和半透明窗体

VB无所不能之四:制作透明和半透明窗体 ——作者:钟声  我们经常可以看到这样的窗体,觉得很炫,如图所示:          同样,对Windows系统方面的编程似乎首先想到的绝对不是VB,而大部分程序员想到的一定是VC。         其实,VB对于这个实现非常方便且简单,用到了“user32”中的SetLayeredWindowAttributes()函数

《Java程序员,上班那点事儿》——清华大学出版社 4937

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Windows界面编程第八篇 listbox彩色显示隔行变色

原文 :    http://blog.youkuaiyun.com/morewindows/article/details/8656061     前面已经有七篇文章介绍了Windows界面编程,目录如下: 1. 《Windows界面编程第一篇位图背景与位图画刷》 2. 《Windows界面编程第二篇半透明窗体》 3. 《Windows界面编程第三篇异形窗体普通版》 4. 《W

-----------------------------不要在跟自己无关的事情上浪费时间 717

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

DELPHI实现类似仿360桌面的程序界面

1.窗体半透明: Alphablend属性为true;Alphablendvalue的值为100 2.窗体透明: formCreate: Self.TransparentColor := True;Self.TransparentColorValue := clBlack; self.color := clblack; 3.隐藏桌面图标 var h: HWND;...

dkopg24406的专栏 607

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

慢慢消失的窗口

能不能做一个自动关闭的窗体?关闭的同时也需要有仪式感,窗体是慢慢的变淡后再消失?

185

【亲测免费】 Qt Windows下的毛玻璃效果下载仓库

Qt Windows下的毛玻璃效果下载仓库 去发现同类优质开源项目:https://gitcode.com/ 在此仓库中,我们提供了Qt在Windows平台下实现毛玻璃效果的完整资源文件。该资源文件将帮助您了解并掌握如何在Windows操作系统上制作具有半透明毛玻璃效果的窗体。 资源文件简介 本资源文件包含了以下关键步骤: 实现半透明效果:在Windows平台上,通过对窗体设置特定的扩展样式(E...

gitblog_06742的博客 328

以CodeBlocks为IDE,在wxWidgets中实现窗体透明效果

在VC中实现窗体的半透明很是酷毙,也想使用wxWidgets来实现这一效果,经过苦苦搜索始终没有找到解决办法,只好引入API了,经过一段时间的摸索终于搞出来了,感觉还不错,记录下来吧!   以下是需要添加的代码(详细代码见附件工程): 1、添加支持API的头文件   #include "windows.h"   2、实现透明效果的代码: HWND hwnd = (HWND)...

dqf88的专栏 911
上一篇: 软件开发方法述评
下一篇: WDM驱动程序设计
CandyCat
博客等级 码龄26年 23粉丝 65原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值