社区
C#
帖子详情
如何重绘winform的窗体边框?
afafaf_2008
2008-12-28 11:47:37
我并不想把窗体的边框设为none再去加图片按钮什么的,只是想重绘蓝色的标题栏和那几个最大化最小化关闭按钮,哪位知道的告诉我怎么做啊?还有如果还想重绘窗体左右和下面的边框又怎么做?
...全文
1170
10
打赏
收藏
如何重绘winform的窗体边框?
我并不想把窗体的边框设为none再去加图片按钮什么的,只是想重绘蓝色的标题栏和那几个最大化最小化关闭按钮,哪位知道的告诉我怎么做啊?还有如果还想重绘窗体左右和下面的边框又怎么做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
datiankuo
2010-07-05
打赏
举报
回复
dssssssssssssssssssssssssssssssssssssss
xu_2007
2008-12-29
打赏
举报
回复
5楼朋友说的方法会闪烁吗?
haha0369
2008-12-29
打赏
举报
回复
研究一下
特别
2008-12-28
打赏
举报
回复
mark
wuyq11
2008-12-28
打赏
举报
回复
参考
http://www.cnblogs.com/volnet/articles/cpp_ondraw.html
wangping_li
2008-12-28
打赏
举报
回复
重载WndProc,然后处理WM_NCCALCSIZE和WM_NCPAINT来重画非用户区(标题栏
参考:
http://9iyou.com/Program_Data/cshap-130392.html
killer_liqiao
2008-12-28
打赏
举报
回复
...
hxp930
2008-12-28
打赏
举报
回复
下面的代码实现了你想要的一部分功能
[DllImport("User32.dll")]
private static extern IntPtr GetWindowDC(IntPtr hwnd);
[DllImport("User32.dll")]
private static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);
[DllImport("Kernel32.dll")]
private static extern int GetLastError();
//标题栏按钮的矩形区域。
Rectangle m_rect = new Rectangle(205, 6, 20, 20);
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
switch (m.Msg)
{
case 0x86://WM_NCACTIVATE
goto case 0x85;
case 0x85://WM_NCPAINT
{
IntPtr hDC = GetWindowDC(m.HWnd);
//把DC转换为.NET的Graphics就可以很方便地使用Framework提供的绘图功能了
Graphics gs = Graphics.FromHdc(hDC);
gs.FillRectangle(new LinearGradientBrush(m_rect, Color.Pink, Color.Purple, LinearGradientMode.BackwardDiagonal), m_rect);
StringFormat strFmt = new StringFormat();
strFmt.Alignment = StringAlignment.Center;
strFmt.LineAlignment = StringAlignment.Center;
gs.DrawString("√", this.Font, Brushes.BlanchedAlmond, m_rect, strFmt);
gs.Dispose();
//释放GDI资源
ReleaseDC(m.HWnd, hDC);
break;
}
case 0xA1://WM_NCLBUTTONDOWN
{
Point mousePoint = new Point((int)m.LParam);
mousePoint.Offset(-this.Left, -this.Top);
if (m_rect.Contains(mousePoint))
{
MessageBox.Show("hello");
}
break;
}
}
}
//在窗口大小改变时及时更新按钮的区域。
private void Form1_SizeChanged(object sender, System.EventArgs e)
{
m_rect.X = this.Bounds.Width - 95;
m_rect.Y = 6;
m_rect.Width = m_rect.Height = 20;
}
lalac
2008-12-28
打赏
举报
回复
override WndProc,重写WM_NCPAINT消息
a12321321321312321
2008-12-28
打赏
举报
回复
http://www.cnblogs.com/volnet/articles/cpp_ondraw.html
可以研究一下。
winform
自定义
窗体
,
重绘
标题栏,自定义控件学习
本文介绍了如何使用C#
WinForm
进行
窗体
美化,通过自定义
窗体
和
重绘
标题栏,实现无
边框
窗体
的定制。作者通过在
窗体
中添加Panel和Label控件来模拟标题栏,并提供了解决无
边框
窗体
无法拖动的问题。此外,还讨论了如何在子
窗体
中动态更新标题和添加最大化、最小化、关闭按钮的功能。
实现
Winform
应用中的无
边框
窗体
设计
本文详细介绍了在
Winform
应用中创建无
边框
窗体
的方法,包括
窗体
类的理解与应用、修改FormBorderStyle属性、自定义
窗体
拖动和大小调整功能、处理控件事件和窗口
重绘
等。通过这些技术,开发者可以根据项目需求创建具有特定界面布局和功能的
窗体
。
WinForm
开发过程中的一些小功能记录
本文记录了
WinForm
开发中的实用技巧,包括设置
窗体
圆角、无
边框
窗体
状态下显示状态栏和
重绘
标题栏,以及自定义Panel控件实现倒角、圆角和标题功能。此外,还解决了线程间操作无效的问题。
C# 更改
窗体
样式
本文介绍如何在C#
WinForm
中通过BitMap和OnPaint方法实现自定义
窗体
样式。利用图片透明化技术和
重绘
机制,可创建无
边框
或异形
窗体
,适用于提示窗口或数据展示界面的美化设计。
如何修改控件
边框
的样式_(十六)C#WinFrom自定义控件系列-基类
窗体
本文档介绍如何在C#
WinForm
s中开发自定义控件,特别是基类
窗体
的创建,实现包括圆角、
边框
样式、热键、蒙版等功能。通过
重绘
技术,设计出扁平化且美观的
窗体
,支持触屏操作。作者分享了GitHub和码云上的源码仓库,邀请读者交流探讨并点赞支持。
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章