社区
C#
帖子详情
求助!怎么实现窗体四周阴影??
dangyj
2015-01-29 04:41:30
怎么实现winform窗体的四周阴影?不用WPF,就是C# GDI+
如果有,请具体写下源码,谢谢
...全文
758
9
打赏
收藏
求助!怎么实现窗体四周阴影??
怎么实现winform窗体的四周阴影?不用WPF,就是C# GDI+ 如果有,请具体写下源码,谢谢
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tzjtzj181
2016-11-29
打赏
举报
回复
public partial class Form1 : Form { [DllImport("Gdi32.dll", EntryPoint = "CreateRoundRectRgn")] private static extern IntPtr CreateRoundRectRgn ( int nLeftRect, // x-coordinate of upper-left corner int nTopRect, // y-coordinate of upper-left corner int nRightRect, // x-coordinate of lower-right corner int nBottomRect, // y-coordinate of lower-right corner int nWidthEllipse, // height of ellipse int nHeightEllipse // width of ellipse ); [DllImport("dwmapi.dll")] public static extern int DwmExtendFrameIntoClientArea(IntPtr hWnd, ref MARGINS pMarInset); [DllImport("dwmapi.dll")] public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize); [DllImport("dwmapi.dll")] public static extern int DwmIsCompositionEnabled(ref int pfEnabled); private bool m_aeroEnabled; // variables for box shadow private const int CS_DROPSHADOW = 0x00020000; private const int WM_NCPAINT = 0x0085; private const int WM_ACTIVATEAPP = 0x001C; public struct MARGINS // struct for box shadow { public int leftWidth; public int rightWidth; public int topHeight; public int bottomHeight; } private const int WM_NCHITTEST = 0x84; // variables for dragging the form private const int HTCLIENT = 0x1; private const int HTCAPTION = 0x2; protected override CreateParams CreateParams { get { m_aeroEnabled = CheckAeroEnabled(); CreateParams cp = base.CreateParams; if (!m_aeroEnabled) cp.ClassStyle |= CS_DROPSHADOW; return cp; } } private bool CheckAeroEnabled() { if (Environment.OSVersion.Version.Major >= 6) { int enabled = 0; DwmIsCompositionEnabled(ref enabled); return (enabled == 1) ? true : false; } return false; } protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_NCPAINT: // box shadow if (m_aeroEnabled) { var v = 2; DwmSetWindowAttribute(this.Handle, 2, ref v, 4); MARGINS margins = new MARGINS() { bottomHeight = 1, leftWidth = 1, rightWidth = 1, topHeight = 1 }; DwmExtendFrameIntoClientArea(this.Handle, ref margins); } break; default: break; } base.WndProc(ref m); if (m.Msg == WM_NCHITTEST && (int)m.Result == HTCLIENT) // drag the form m.Result = (IntPtr)HTCAPTION; } public Form1() { m_aeroEnabled = false; this.FormBorderStyle = FormBorderStyle.None; InitializeComponent(); } } 已测,无问题
crystal_lz
2015-02-08
打赏
举报
回复
简单一点的话 设置一下窗体的样式就可以了 SetWindowLong函数 把窗体设置成弹出菜单样式就会有一个阴影了 不过那个阴影不怎么好看 好看一点的还是分层窗体吧
云•海
2015-02-07
打赏
举报
回复
win7下面窗体自带就有这样的效果。得在xp系统才能看到效果吧。
dylike
2015-02-07
打赏
举报
回复
做一个透明的阴影层,可用PS等画,保存为PNG,然后用代码设置为窗体透明显示.
DSAPI多功能组件编程应用-PNG成为窗体
mcff
2015-02-01
打赏
举报
回复
在CNBLOG有相关的帖子..我帮楼主转过来..http://www.cnblogs.com/Keep-Silence-/archive/2013/01/09/2852937.html
忘丿殇
2015-01-30
打赏
举报
回复
http://download.csdn.net/detail/key4lock/7251651
你可以看下这个
dangyj
2015-01-30
打赏
举报
回复
bdmh 你给的链接效果是系统自带的那种,也就是只是下方和右边有。我要的是四周都有阴影的。
devmiao
2015-01-29
打赏
举报
回复
用updatelayeredwindow api
bdmh
2015-01-29
打赏
举报
回复
不要总想着是在窗体外面,你就把窗体的边缘当做外面,在窗体边缘绘制一定像素的阴影色,就能模拟出阴影效果
如果是无边框窗体,可以考虑
http://www.cnblogs.com/huangcong/archive/2010/03/26/1697088.html
WinForm 无边框
窗体
四周
阴影
窗体
可拖动 无边框自定义标题栏
● 开发环境 Microsoft Visual Studio ● 开发语言 Visual C# ● 开发过程 1、新建一个Windows
窗体
应用(.NET Framework),项目名称为MyApp,确定生成解决方案。 2、在解决方案资源管理器里将Form1更改为FormMain。 3、在解决方案资源管理器里右击解决方案'MyApp',添加-新建项目-类库(.N...
C WinForm
窗体
四周
阴影
效果
实现
C# WinForm
窗体
四周
阴影
效果
实现
去发现同类优质开源项目:https://gitcode.com/ 本资源文件提供了一个在C# WinForm应用程序中
实现
窗体
四周
阴影
效果的解决方案。该方案适用于在取消默认边框的情况下,为
窗体
添加美观的
阴影
效果。 资源描述 在Winform应用程序中,通常
窗体
的边框会占用一定的空间,并且样式较为固定。为了
实现
更加自定义的
窗体
外观,开发者可能会选择取消默认...
WinForm无边框
窗体
:纯代码绘制标题栏及其控件,
窗体
四周
阴影
,可拖拽。可直接继承使用。
因WinForm本身的
窗体
界面太过传统,需要自定义标题栏部分时,又因修改难度较大或始终有点不理想,基于对于C#的热爱,只好选择动手纯代码绘制,所以记录了此文章,以作备用。1、当ShowCaption属性值为FALSE时,
窗体
为一个不含任何控件的
四周
阴影
、可拖拽
窗体
。2、当ShowCaption属性值为TRUE时,
窗体
为一个包含标题栏的
四周
阴影
、可拖拽
窗体
。此时鼠标仅在标题栏范围内按下才可进行
窗体
的拖拽操作。3、当
窗体
的MaximizeBox属性值为FALSE时,
窗体
的大小是不可调整的。默认值:false。
Qt C++自定义
窗体
,
实现
自定义标题栏、
阴影
、全局背景、拖拽、缩放、最大化等功能,附下载链接
功能:自定义标题栏、
阴影
、透明、边框、全局背景、拖拽、缩放、最大化、最小化、还原、关闭、记住
窗体
状态。 网上已经有很多类似的教程,但都有一些不足。本篇文章几乎完全
实现
了和window默认
窗体
的所有功能(缺少最小化的动画和分屏)。 我是业余的,水平不高,这是我能想到最完美的解决方案了。
C# WinForm
窗体
四周
阴影
效果
一、起因关于winform
窗体
无边框的问题很简单,只需要设置winform的
窗体
属性即可:FormBorderStyle = FormBorderStyle.None;但是这中无边框窗口
实现
的效果和背景完全没有层次的感觉,所以能加上
阴影
,突出窗口显示的感觉。二、网上搜索的解决方案方法 1首先,发现了使用 user32.dll 中方法
实现
的方案: C# WinForm无边框
窗体
设置
阴影
效果缺点:这种
C#
111,128
社区成员
642,536
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章