让你的软件界面更漂亮(一)
下载源代码
我们使用过很多的软件, 给我们留下印象很深的是那些界面漂亮且迷人的软件, 国外的软件象QuickTime,国产的象金山词霸等,它们的软件界面设计风格都有独特之处。本人跟据自已的经验和大家探讨一下软件的漂亮界面实现的原理并提供DEMO程序。本人经验不多,经常从VCKBASE.COM吸取知识,共同学习,如有不足之处,请指正!也欢迎和我联系。下面就开始吧!
一、漂亮界面实现的原理
用图象元素自绘窗口标题样栏,边框,系统按钮(最大化、最小化、关闭按钮)还有按窗口中的控件。图象当然是美工画的,但要你教美工怎么去画,是不是不能理解? ,呆会我会告诉你你如何去教美工画.请先仔细看下图。

明白了吧,被红线包括的部分都是要画的图象。画得好不好会直接影响你的软件界面。c createcompatibledc
二、原理说玩了,来说一下实现的基本知识
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。c createcompatibledcleft; point。y = point。y - rtWnd。top; //判断mouse是否移到系统按钮上 if (m_rtButtExit。PtInRect(point)) { pBitmap->LoadBitmap(IDB_EXIT_FOCUS); StrTemp = _T("关闭"); } else { if(m_rtButtMin。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-33421-1.html
择机升级应该是选项了
比芝麻糊营养高