DirectUI 高仿QQ2012登录界面 源代码 加介绍

geniusice18 2012-12-23 05:45:02
加精
博客 :高仿QQ2012登录界面


高仿QQ2012登录界面, 用的是MFC写的Direct UI 方式,支持换肤,先看效果图








QQ透明皮肤:多层算法,一键适配各种背景

代码和这个的方法有点像,分为背景层,质感层,内容层

背景层:最下面的是背景层,QQ的界面当要做为皮肤的图片小于界面时其他的地方就会用图片的平均颜色来填充,在图片和平均颜色的地方还有个过滤的效果
过度效果如下图


取得平均颜色的代码如下
// 取得图片平均颜色
bool GetAverageColor(CDC *pDC, CBitmap &bitmap, const CSize &sizeImage, COLORREF &clrImage)
{
bool bIsResult = false;

CDC TempDC;
TempDC.CreateCompatibleDC(pDC);
CBitmap *pOldBitmap = TempDC.SelectObject(&bitmap);

int nWidth = sizeImage.cx;
int nHeight = sizeImage.cy;
// 定义位图信息
BITMAPINFO bi;
bi.bmiHeader.biSize = sizeof(bi.bmiHeader);
bi.bmiHeader.biWidth = nWidth;
bi.bmiHeader.biHeight = nHeight;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biCompression = BI_RGB;
bi.bmiHeader.biSizeImage = nWidth * nHeight * 4; // 32 bit
bi.bmiHeader.biClrUsed = 0;
bi.bmiHeader.biClrImportant = 0;

// 获取位图数据
BYTE* pBits = (BYTE*)new BYTE[bi.bmiHeader.biSizeImage];
::ZeroMemory(pBits, bi.bmiHeader.biSizeImage);

int nLine = ::GetDIBits(TempDC.m_hDC, (HBITMAP)bitmap.GetSafeHandle(), 0, nHeight, pBits, &bi, DIB_RGB_COLORS);
if (!nLine)
{
delete []pBits;
pBits = NULL;
}
else
{
long r = 0, g = 0, b = 0;

for (LONG i = 0; i < nWidth; i++)
{
for (LONG j = 0; j < nHeight; j++)
{
b += pBits[(j * nWidth + i) * 4];
g += pBits[(j * nWidth + i) * 4 + 1];
r += pBits[(j * nWidth + i) * 4 + 2];
}
}

delete []pBits;
pBits = NULL;
int n = nWidth * nHeight;
clrImage = RGB(r / n, g / n, b / n);
bIsResult = true;
}

TempDC.SelectObject(pOldBitmap);
TempDC.DeleteDC();

return bIsResult;
}


质感层:质感层可以只是一个带透明度的矩形(一般为白色吧),可以是整个矩形透明度一样,也可以从上到下减少如下图,左边的效果是如四个区域组成,右边的是四个区域分开的效果



内容层: 内容层也就是控件层了没什么好说的,少个质感层的话会是这种效果






其他方面也就没什么了,详情请看代码


如果发现在BUG什么的或有别的实现方法可以联系我QQ:278162354

附源代码下载地址
...全文
13903 144 打赏 收藏 转发到动态 举报
写回复
用AI写文章
144 条回复
切换为时间正序
请发表友善的回复…
发表回复
悠悠球霸 2014-07-21
  • 打赏
  • 举报
回复
怎么没有QQ好友列表
csdd1105 2014-03-29
  • 打赏
  • 举报
回复
有没有DIRECT UI界面弹出对话框的例子? 谢谢。
演地 2014-03-10
  • 打赏
  • 举报
回复
海xs 2013-12-05
  • 打赏
  • 举报
回复
好东西啊,顶
yang875890916 2013-11-26
  • 打赏
  • 举报
回复
很期待楼主发布QQ主界面源码。
usingthelefthand 2013-11-05
  • 打赏
  • 举报
回复
研究了下很有收获。也期待楼主后续的作品
明空皓月 2013-10-07
  • 打赏
  • 举报
回复
新手学习中……赞……
aishuren0722 2013-10-06
  • 打赏
  • 举报
回复
感谢楼主开源,绝对顶你
xiaolomg 2013-08-17
  • 打赏
  • 举报
回复
真心拉风!
随风随恨 2013-06-03
  • 打赏
  • 举报
回复
mark学习
零宽度接合 2013-05-17
  • 打赏
  • 举报
回复
好牛啊,我也要学着做
xjwsky 2013-05-16
  • 打赏
  • 举报
回复
学习呀,学c++ mfc
smilestone322 2013-04-25
  • 打赏
  • 举报
回复
界面做的不错
xibuzhuzi 2013-04-24
  • 打赏
  • 举报
回复
哇哇哇,真牛叉啊,太漂亮了,膜拜,学习
  • 打赏
  • 举报
回复
实在太漂亮了,新手激动不已
Iam太陽神 2013-03-19
  • 打赏
  • 举报
回复
UP UP 向LZ致敬!!
hurrican1990 2013-03-19
  • 打赏
  • 举报
回复
我也正在搞界面,借鉴下
傻傻不解释 2013-03-18
  • 打赏
  • 举报
回复
相比之下 丢人咯!!!
Fields_Of_Gold 2013-03-13
  • 打赏
  • 举报
回复
做的太好了,可以好好研究研究。。。
大拙男 2013-03-11
  • 打赏
  • 举报
回复
mark一下,学习学习
加载更多回复(124)

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧