社区
C#
帖子详情
如何重绘winform的窗体边框?
afafaf_2008
2008-12-28 11:47:37
我并不想把窗体的边框设为none再去加图片按钮什么的,只是想重绘蓝色的标题栏和那几个最大化最小化关闭按钮,哪位知道的告诉我怎么做啊?还有如果还想重绘窗体左右和下面的边框又怎么做?
...全文
1121
10
打赏
收藏
如何重绘winform的窗体边框?
我并不想把窗体的边框设为none再去加图片按钮什么的,只是想重绘蓝色的标题栏和那几个最大化最小化关闭按钮,哪位知道的告诉我怎么做啊?还有如果还想重绘窗体左右和下面的边框又怎么做?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
可以研究一下。
C#
重绘
windows
窗体
标题栏和
边框
C#
重绘
windows
窗体
标题栏和
边框
,主要描述了C#中
窗体
的
重绘
和
边框
的
重绘
winform
gdi+
重绘
窗体
控件
Winform
窗体
重绘
,button控件
重绘
,listbox控件
重绘
,checkbox
重绘
等控件。原创资源 编写于2009-2010
C#
WinForm
窗体
四周阴影效果
在
Winform
取消默认
边框
的情况下,实现了
窗体
四周带阴影的效果。利用双层
窗体
实现,上层是普通的控件
窗体
,底部是绘制的
窗体
阴影。
C#
WinForm
窗体
控件Panel修改
边框
颜色以及
边框
宽度方法
C#
WinForm
窗体
控件Panel修改
边框
颜色以及
边框
宽度方法 可以直接到博客地址查看主要代码:http://www.cnblogs.com/JiYF/p/9047559.html
C#
winform
窗体
四个角变成圆角,美观
窗体
https://blog.csdn.net/qq_34280681/article/details/105428119
C#
111,097
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章