C#透明窗体代码详解

实现C#透明窗体是如何实现的呢?这里向你介绍通过调用Windows API来实现C#透明窗体。那么具体的过程和步骤是什么呢?让我们来看看具体的实现。

创新互联于2013年创立,先为慈溪等服务建站,慈溪等地企业,进行企业商务咨询服务。为慈溪企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

C#透明窗体实现实例:

C#透明窗体之WinAPI.cs类文件,Invoke & Wrap了窗体透明所需要的API函数:

 
 
 
  1. [coolcode lang="cpp" download="WinAPI.cs"]  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Text;  
  5. using System.Runtime.InteropServices;  
  6.  
  7. namespace TransForm  
  8. {  
  9. class WinAPI  
  10. {  
  11. [DllImport("user32.dll")]  
  12. public extern static IntPtr GetDesktopWindow();  
  13.  
  14. [DllImport("user32.dll")]  
  15. public extern static bool   
  16. SetLayeredWindowAttributes(  
  17. IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags);  
  18. public static uint LWA_COLORKEY = 0×00000001;  
  19. public static uint LWA_ALPHA = 0×00000002;  
  20.  
  21. [DllImport("user32.dll")]  
  22. public extern static uint   
  23. SetWindowLong(IntPtr hwnd,   
  24. int nIndex, uint dwNewLong);  
  25. [DllImport("user32.dll")]  
  26. public extern static uint   
  27. GetWindowLong(IntPtr hwnd, int nIndex);  
  28.  
  29. public enum WindowStyle : int 
  30. {  
  31. GWL_EXSTYLE = -20  
  32. }  
  33.  
  34. public enum ExWindowStyle : uint 
  35. {  
  36. WS_EX_LAYERED = 0×00080000  
  37. }  
  38.  
  39. }  
  40. }  
  41. [/coolcode]  

C#透明窗体之DeviceForm.cs单元是API函数的调用方式:

 
 
 
  1. [coolcode lang="cpp" download="form1.cs"]  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.ComponentModel;  
  5. using System.Data;  
  6. using System.Drawing;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9.  
  10. namespace TransForm  
  11. {  
  12. public partial class Form1 : Form  
  13. {  
  14. public Form1()  
  15. {  
  16. InitializeComponent();  
  17. }  
  18.  
  19. private void Form1_Load(object sender, EventArgs e)  
  20. {  
  21. this.SetWindowTransparent(100);  
  22. }  
  23. private void SetWindowTransparent(byte bAlpha)  
  24. {  
  25. try 
  26. {  
  27. WinAPI.SetWindowLong(  
  28. this.Handle,   
  29. (int)WinAPI.WindowStyle.GWL_EXSTYLE,  
  30. WinAPI.GetWindowLong(  
  31. this.Handle,   
  32. (int)WinAPI.WindowStyle.GWL_EXSTYLE) |   
  33. (uint)WinAPI.ExWindowStyle.WS_EX_LAYERED);  
  34.  
  35. WinAPI.SetLayeredWindowAttributes(  
  36. this.Handle, 0, bAlpha,  
  37.  WinAPI.LWA_COLORKEY | WinAPI.LWA_ALPHA);  
  38. }  
  39. catch 
  40. {  
  41. }  
  42. }  
  43. protected override CreateParams CreateParams  
  44. {  
  45. get 
  46. {  
  47. CreateParams cp = base.CreateParams;  
  48.  
  49. cp.Parent = WinAPI.GetDesktopWindow();  
  50. cp.ExStyle = 0×00000080 | 0×00000008;  
  51. //WS_EX_TOOLWINDOW | WS_EX_TOPMOST  
  52.  
  53. return cp;  
  54. }  
  55. }  
  56. }  
  57. }  
  58. [/coolcode]  

C#透明窗体的实现基本内容就向你介绍到这里,希望对你了解和学习C#透明窗体有所帮助。

文章名称:C#透明窗体代码详解
文章网址:http://www.shufengxianlan.com/qtweb/news15/49015.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联