winform窗体界面设计技巧-不规则、可改变大小、边框半透明效果

winform窗体界面设计技巧-不规则、可改变大小、边框半透明效果

ID:14432987

大小:123.50 KB

页数:9页

时间:2018-07-28

winform窗体界面设计技巧-不规则、可改变大小、边框半透明效果_第1页
winform窗体界面设计技巧-不规则、可改变大小、边框半透明效果_第2页
winform窗体界面设计技巧-不规则、可改变大小、边框半透明效果_第3页
winform窗体界面设计技巧-不规则、可改变大小、边框半透明效果_第4页
winform窗体界面设计技巧-不规则、可改变大小、边框半透明效果_第5页
资源描述:

《winform窗体界面设计技巧-不规则、可改变大小、边框半透明效果》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、网上也看过很多做.NET窗体的例子,我只是把网上的这些东西综合了一下,主要有下面这些特点:1、边框是半透明的,透明度可根据需要自己更改;2、可以改变窗体的大小,改变后样式不变;3、窗体的边框是不规则的;4、重点解决了窗体会出现闪烁的问题,在窗体移动的时候也不会闪烁;5、使用方便,只要将AlphaFormPanel拖动到一般的窗体上就可以实现换肤; 设计思路说明:一、.NET下处理一个窗体部分透明我所知道的有两种方法:     1、用一张支持Alhpa通道的图片来处理半透明,这种方式处理出来的效果会很好,甚至可以用一张动态的图片来做背景。相信有人看过那个游动的鱼

2、的程序,鱼的边缘是半透明的,就是用这种方式做的。这种方式整个窗体都是通过UpdateLayeredWindow画出来的,如果要在上面加控件的话,所有的控件都要自己来绘制,显然在具体的项目中用这种方式的话会大大增加开发的难度。有兴趣的人可以看看这个程序:  /Files/liutao409/游动的鱼.rar关键的代码就是根据这种支持Alhpa通道的图片来绘制窗体[DllImport("user32.dll",ExactSpelling=true,SetLastError=true)]publicstaticexternintUpdateLayeredWindow

3、(IntPtrhwnd,IntPtrhdcDst,refPointpptDst,refSizepsize,IntPtrhdcSrc,refPointpptSrc,Int32crKey,ref BLENDFUNCTIONpblend,Int32dwFlags);publicvoidSetBits(Bitmapbitmap){   if(!haveHandle)return;if(!Bitmap.IsCanonicalPixelFormat(bitmap.PixelFormat)

4、!Bitmap.IsAlphaPixelFormat(bitmap.PixelFor

5、mat))thrownewApplicationException("图片必须是32位带Alhpa通道的图片。");          IntPtroldBits=IntPtr.Zero;          IntPtrscreenDC=Win32.GetDC(IntPtr.Zero);          IntPtrhBitmap=IntPtr.Zero;          IntPtrmemDc=Win32.CreateCompatibleDC(screenDC);      try         {            Win32.PointtopL

6、oc=newWin32.Point(Left,Top);            Win32.SizebitMapSize=newWin32.Size(bitmap.Width,bitmap.Height);            Win32.BLENDFUNCTIONblendFunc=newWin32.BLENDFUNCTION();           Win32.PointsrcLoc=newWin32.Point(0,0);             hBitmap=bitmap.GetHbitmap(Color.FromArgb(0));       

7、      oldBits=Win32.SelectObject(memDc,hBitmap);             blendFunc.BlendOp=Win32.AC_SRC_OVER;             blendFunc.SourceConstantAlpha=255;             blendFunc.AlphaFormat=Win32.AC_SRC_ALPHA;             blendFunc.BlendFlags=0;             Win32.UpdateLayeredWindow(Handle,scr

8、eenDC,reftopLoc,refbitMapSize,memDc,refsrcLoc,0,refblendFunc,Win32.ULW_ALPHA);           }       finally           {               if(hBitmap!=IntPtr.Zero)               {                   Win32.SelectObject(memDc,oldBits);                   Win32.DeleteObject(hBitmap);            

9、   }               

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。