让你的软件界面更漂亮(一)

2016-01-29 11:58 242 1 收藏

让你的软件界面更漂亮(一),让你的软件界面更漂亮(一)

【 tulaoshi.com - C语言心得技巧 】

让你的软件界面更漂亮(一)

作者:朱一松

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

下载源代码

  我们使用过很多的软件, 给我们留下印象很深的是那些界面漂亮且迷人的软件, 国外的软件象QuickTime,国产的象金山词霸等,它们的软件界面设计风格都有独特之处。本人跟据自已的经验和大家探讨一下软件的漂亮界面实现的原理并提供DEMO程序。本人经验不多,经常从VCKBASE.COM吸取知识,共同学习,如有不足之处,请指正!也欢迎和我联系。下面就开始吧!

一、漂亮界面实现的原理

  用图象元素自绘窗口标题样栏,边框,系统按钮(最大化、最小化、关闭按钮)还有按窗口中的控件。图象当然是美工画的,但要你教美工怎么去画,是不是不能理解? ,呆会我会告诉你你如何去教美工画.请先仔细看下图。




明白了吧,被红线包括的部分都是要画的图象。画得好不好会直接影响你的软件界面。

二、原理说玩了,来说一下实现的基本知识

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中实现它们的代码:
void CTitleBarDlg::OnNcMouseMove(UINT nHitTest, CPoint point) {CDC* pDC = GetWindowDC();CDC* pDisplayMemDC=new CDC;pDisplayMemDC->CreateCompatibleDC(pDC);CBitmap* pBitmap = new CBitmap;CBitmap* pOldBitmap;CRect rtWnd, rtButton;if (pDC){CString StrTemp = "";GetWindowRect(&rtWnd);//mouse坐标转化为本窗口坐标 重要point.x = point.x - rtWnd.left;point.y = point.y - rtWnd.top;//判断mouse是否移到系统按钮上if (m_rtButtExit.PtInRect(point)){pBitmap->LoadBitmap(IDB_EXIT_FOCUS);StrTemp = _T("关闭");}else{if(m_rtButtMin.PtInRect(point)){pBitmap->LoadBitmap(IDB_MIN_FOCUS);StrTemp = _T("最小化窗口");}else{if(m_rtButtMax.PtInRect(point)){pBitmap->LoadBitmap(IDB_MAX_FOCUS);if(IsZoomed()){StrTemp = _T("还原窗口");}else{StrTemp = _T("最化大窗口");}}else{pBitmap->LoadBitmap(IDB_NORMAL);}}}rtButton = m_rtButtMin;BITMAP BmpInfo;pBitmap->GetBitmap(&BmpInfo);pOldBitmap=(CBitmap*)pDisplayMemDC->SelectObject(pBitmap);pDC->BitBlt(rtButton.left-6, rtButton.top-2, BmpInfo.bmWidth, BmpInfo.bmHeight, pDisplayMemDC, 0, 0, SRCCOPY);pDisplayMemDC->SelectObject(pOldBitmap);pBitmap->DeleteObject();CRect ShowTipRec;ShowTipRec = m_rtButtMin;if(!StrTemp.IsEmpty()){//ScreenToClient(&ShowTipRec);//  m_ToolTip.AddToolTip(IDD_TITLEBAR_DIALOG,&ShowTipRec,StrTemp);//m_ToolTip.SetDelayTime(200);        }}ReleaseDC(pDisplayMemDC);ReleaseDC(pDC);delete pDisplayMemDC;delete pBitmap;CDialog::OnNcMouseMove(nHitTest, point);}//此为关键函数void CTitleBarDlg::DrawTitleBar(CDC *pDC){if (m_hWnd){CBrush Brush(RGB(0,100,255));CBrush* pOldBrush = pDC->SelectObject(&B
                        

来源:http://www.tulaoshi.com/n/20160129/1484042.html

延伸阅读
标签: 宝宝
怎样让宝宝更漂亮可爱        每个妈妈都希望让自己的宝宝漂亮、可爱,女宝宝的妈妈更是看中在意这一点,那么漂亮的前提就是皮肤好。那么吃什么食物能让宝宝皮肤好呢? 1、含维生素A的食物保护皮肤 维生素A能够生成肌肤真皮层内的胶原蛋白和弹力纤维,促进调节并保护机体,维护皮肤、上皮组织的正常功...
标签: 胎教 宝宝
孕期巧饮食宝宝更漂亮 你想让你的宝宝健康么?你想让你的宝宝聪明么?这些问题我在这里不予回答,我现在要谈的问题是:如何能让你未来的宝宝变漂亮。 要做妈妈了,这是件令所有女性欣喜、兴奋的事儿。可是,在欢喜的同时,也许你还会生出几分忧虑:孩子他爸个子不高,怎么才能让我的宝贝将来长成高个呢?我们两口子皮肤都有点黑...
标签: 育儿知识
怎样让宝宝更漂亮可爱 每个妈妈都希望让自己的宝宝漂亮、可爱,女宝宝的妈妈更是看中在意这一点,那么漂亮的前提就是皮肤好。那么吃什么食物能让宝宝皮肤好呢? 1、含维生素A的食物保护皮肤 维生素A能够生成肌肤真皮层内的胶原蛋白和弹力纤维,促进调节并保护机体,维护皮肤、上皮组织的正常功能,让肌肤紧致、有弹性。宝宝常用...
标签: 减肥 减肥方法
减肥捷径1. 我们在体重计上看到了体重,却忽视了脂肪。研究人员建议我们每年至少要进行一次身体脂肪评测,了解脂肪在身体各部分的分布状况,以此为依据制定减脂计划。健身中心、纤体中心、减肥门诊都有此服务。 最危险的脂肪――腰、腹部脂肪。造成内脏器官负担,引发健康忧患,所幸这部分脂肪通过运动和节食很容易被减掉。 最...
标签: 美容
南瓜洗净去皮后切成小丁备用(便于后续步骤搅拌机更容易打泥);将切好的南瓜丁倒入碗中放入蒸锅大火蒸12分钟左右(无需保鲜膜);将蒸熟的南瓜取出后放凉倒入搅拌机搅打成泥,碗里的水一并倒入;将南瓜泥倒入锅中,倒入少量牛奶,放入白砂糖、淡奶油和糯米粉小火不停搅拌均匀后即可。 吃这些蔬菜让你更漂亮!奶香南瓜羹的做法 ...

经验教程

58

收藏

69
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部