自己动手做漂亮的界面
2014-07-17 03:27
211 查看
我们使用过很多的软件, 给我们留下印象很深的是那些界面漂亮且迷人的软件, 国外的软件象QickTime,国产的象金山词霸等,它们的软件界面设计风格都有独特之处。本人跟据自已的经验和大家探讨一下软件的漂亮界面实现的原理并提供DEMO程序。
一、漂亮界面实现的原理
用图象元素自绘窗口标题样栏,边框,系统按钮(最大化、最小化、关闭按钮)还有按窗口中的控件。图象当然是美工画的,但要你教美工怎么去画,是不是不能理解? ,呆会我会告诉你你如何去教美工画.请先仔细看下图。
明白了吧,被红线抱括的部分都是要画的图象。画得好不好会直接影响你的软件界面。
二、原理说玩了,来说一下实现的基本知识
1、VC软件绘图技术:
CBitmap* pBitmap = new CBitmap;
BITMAP BmpInfo;
CBitmap* pOldBitmap;
CDC* pDisplayMemDC=new CDC;
pDisplayMemDC->CreateCompatibleDC(pDC);
pBitmap->LoadBitmap(IDB_TITLE_LEFT);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pBitmap->GetBitmap(&BmpInfo);
// x,y为绘图位置 ,必要时此语句要有For(..;..;..)控制
pDC->BitBlt(x,y, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
pBitmap->DeleteObject();
ReleaseDC(pDisplayMemDC);//记得执行以下的语句
delete pDisplayMemDC;
delete pBitmap;
2、坐标的概念:点、窗口坐标和屏幕坐标及转换,很重要!如不清楚请先复习相关知识。
下图是我写在一个界面,就是基于上述原理实现的:
下面介绍软件如何实现的:
①、重载对话框的消息函数:
void OnNcLButtonDown(UINT nHitTest, CPoint point);
//单击标题栏时是响应 void OnNcMouseMove(UINT nHitTest, CPoint point);
//Mous 在标题移动时响应 LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
②、添加关键成员函数为:BOOL DrawTitleBar(CDC *pDC)
③、添加完消息涵数后,在.cpp中实现它们的代码(点击查看代码附件):
好了运行你的序程,即可出现漂亮的界面。说明在设计对话框时最好只选上Title Bars,其它不要.消息函数要手动添加。只本程序是在VC++6.0 +WinXP环境下完成的。
经过实践证明,仅仅画一个窗口很容易,多窗口程序软件实现统一风格很难。如若有机会的话,我会和大家继续探讨如何将设计好的漂亮窗口子类化,让程序所有的窗口有统一风格,美化窗口的其它控件并可自动随窗口改变而调整大小。我想那才是我们大家关心的。对不?
转载自:http://pcedu.pconline.com.cn/empolder/gj/vc/0508/694157.html
一、漂亮界面实现的原理
用图象元素自绘窗口标题样栏,边框,系统按钮(最大化、最小化、关闭按钮)还有按窗口中的控件。图象当然是美工画的,但要你教美工怎么去画,是不是不能理解? ,呆会我会告诉你你如何去教美工画.请先仔细看下图。
明白了吧,被红线抱括的部分都是要画的图象。画得好不好会直接影响你的软件界面。
二、原理说玩了,来说一下实现的基本知识
1、VC软件绘图技术:
CBitmap* pBitmap = new CBitmap;
BITMAP BmpInfo;
CBitmap* pOldBitmap;
CDC* pDisplayMemDC=new CDC;
pDisplayMemDC->CreateCompatibleDC(pDC);
pBitmap->LoadBitmap(IDB_TITLE_LEFT);
pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);
pBitmap->GetBitmap(&BmpInfo);
// x,y为绘图位置 ,必要时此语句要有For(..;..;..)控制
pDC->BitBlt(x,y, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);
pDisplayMemDC->SelectObject(pOldBitmap);
pBitmap->DeleteObject();
ReleaseDC(pDisplayMemDC);//记得执行以下的语句
delete pDisplayMemDC;
delete pBitmap;
2、坐标的概念:点、窗口坐标和屏幕坐标及转换,很重要!如不清楚请先复习相关知识。
下图是我写在一个界面,就是基于上述原理实现的:
下面介绍软件如何实现的:
①、重载对话框的消息函数:
void OnNcLButtonDown(UINT nHitTest, CPoint point);
//单击标题栏时是响应 void OnNcMouseMove(UINT nHitTest, CPoint point);
//Mous 在标题移动时响应 LRESULT DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
②、添加关键成员函数为:BOOL DrawTitleBar(CDC *pDC)
③、添加完消息涵数后,在.cpp中实现它们的代码(点击查看代码附件):
好了运行你的序程,即可出现漂亮的界面。说明在设计对话框时最好只选上Title Bars,其它不要.消息函数要手动添加。只本程序是在VC++6.0 +WinXP环境下完成的。
经过实践证明,仅仅画一个窗口很容易,多窗口程序软件实现统一风格很难。如若有机会的话,我会和大家继续探讨如何将设计好的漂亮窗口子类化,让程序所有的窗口有统一风格,美化窗口的其它控件并可自动随窗口改变而调整大小。我想那才是我们大家关心的。对不?
转载自:http://pcedu.pconline.com.cn/empolder/gj/vc/0508/694157.html
相关文章推荐
- 自己动手做漂亮的界面(B)
- 如何在自己的信息管理系统里集成第三方权限控制组件 - 设计一个漂亮的WEB界面
- 积极响应博客园友的开源号召,开源自己几年前创建的一个客户关系管理CRM系统 分享美观漂亮的的界面框架
- 如何在自己的信息管理系统里集成第三方权限控制组件 - 设计一个漂亮的WEB界面
- 480+免费icon sets帮助我们在Flex中创建自己的漂亮的Skin和Theme
- 鱼鱼Chen之学写自己的apk(二) 使用SlidingPaneLayout实现漂亮的布局
- [DNN功能]自己动手做语言包
- 使用Vitamio打造自己的Android万能播放器(3)——本地播放(主界面、播放列表)
- 自己做的一个后台管理员登陆界面 .cshtml
- java也能写出漂亮的界面(Java开源Swing外观)
- Android开发怎么让自己的APP UI漂亮、大方(规范篇一)
- 替换GINA.DLL实现自己的登陆界面[酷狗] 转
- 闪屏,我们自己动手做,相当简单
- 教你如何自己动手做第三层交换机
- 《题库管理系统》是一款操作使用简单,界面漂亮美观的教学管理应用软件。
- QT 做界面,加载c语言自己编译的动态库
- JQuery实现个性化,可以拖拽 自定义自己的界面(二)
- 自己动手做博客之日志管理-1.2 数据库分析
- 自己动手做博客之日志管理-3.2 编码实现系统首页
- 自己动手做聊天机器人 十一-0字节存储海量语料资源 - SharEDITor - 关注大数据技术