MFC创建圆角矩形边框
来源:互联网 发布:淘宝助理5一键下架宝贝 编辑:程序博客网 时间:2024/06/04 19:57
最近在写一个安装程序的界面。需要自绘对话框及一系列控件。
个人认为MFC自定义控件或对话框最基本的思想就是了解这些元素的创建过程,并适当的截取消息进行重写。
对话框分为客户区与非客户区。
获取客户区的设备上下文函数是:GetDC();
获取非客户区的设备上下文是:GetWindowDC();这个DC其实是整个窗口的DC。
我们要绘制一个圆角矩形的边框。
就是响应OnNcPaint这个消息。
void CTestChildDlgDlg::OnNcPaint()
{
// TODO: Add your message handler code here
// Do not call CDialog::OnNcPaint() for painting messages
CRect rect ,rect1;
GetClientRect(&rect);
GetWindowRect(&rect1);
ScreenToClient(&rect1);
CDC *pdc = GetWindowDC();
if (!m_rgn.m_hObject)
{
m_rgn.CreateRoundRectRgn((-rect1.left) -1 ,(-rect1.top) ,rect.right - rect1.left + 2 ,rect.bottom - rect1.top + 2 ,10 ,10);
//可以跟踪下rect 跟 rect1的值。我们是在整个窗口区进行绘制,而ScreenToClient(&rect1)之后,rect1的坐标是相对于窗口客户区而言的。你可以观察到rect1有负的坐标值。而我们要在整个窗口区进行绘制,就需把这个相对于客户区的坐标转换为相对于整个窗口的坐标。
同时OnEraseBkgnd()里面应该return TRUE;默认会使用系统画刷不断刷新窗口,我们绘制出来的边框的圆角将显示不出来。
SetWindowRgn(m_rgn ,TRUE);
}
CBrush brush;
brush.CreateSolidBrush(RGB(255 ,0 ,0));
pdc->FrameRgn(&m_rgn ,&brush ,1 ,1);
}
坐标可以进行适当的调整。以达到自己想要的效果。
- MFC创建圆角矩形边框
- 圆角矩形 边框
- CSS3 创建圆角边框及矩形添加阴影
- textview加矩形边框和圆角边框
- textview加矩形边框和圆角边框
- 实现圆角矩形边框的方法
- 纯css制作圆角矩形边框
- css做出圆角矩形边框
- css用边框实现圆角矩形
- css用边框实现圆角矩形
- DIV+CSS边框实现圆角矩形
- CSS 边框实现圆角矩形
- Android 带边框的圆角矩形
- c# 画控件圆角矩形边框
- MFC绘制圆角矩形
- MFC圆角矩形窗口
- DirectX 下绘制带边框的圆角矩形
- android圆角矩形有边框无背景色
- openCV——角点检测
- C 内存结构
- JAVA中常用IO流类:BufferedReader和BufferedWriter .
- StringUtils的一些控制空白字符的函数
- 青蛙诗集-序
- MFC创建圆角矩形边框
- 页面打印 css
- window server 2003安装后无法上网问题解决办法总结
- 学PLC编程的入门要注意
- IOS关于日期格式
- 浅谈ADO
- 球队比赛问题
- android的图形系统
- HDU 1430 魔板 搜索