界面开发心得与Duilib

一、设置窗体透明度和指定透明色(如指定了黑色,即所有黑色的部分将会变得透明)

	DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE); 
	if((dwExStyle&WS_EX_LAYERED)!=WS_EX_LAYERED) 
		SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle|WS_EX_LAYERED); 

	HMODULE hInst = LoadLibrary(_T("User32.DLL")); 
	typedef BOOL (WINAPI *MYFUNC)(HWND, COLORREF, BYTE, DWORD); 
	MYFUNC SetLayeredWindowAttributes = NULL; 

	SetLayeredWindowAttributes = (MYFUNC)::GetProcAddress(hInst, "SetLayeredWindowAttributes"); 

	if(SetLayeredWindowAttributes)
	{
		if(!SetLayeredWindowAttributes(m_hWnd, RGB(0,0,0), 150, LWA_COLORKEY|LWA_ALPHA))
		{
			assert(false && _T("SetLayeredWindowAttributes 失败了!"));
		}
	}

上面的代码:1、首先让WINDOWSTYLE加上GWL_EXSTYLE样式,因为SetLayeredWindowAttributes只能对这种样式操作,而只有PUPUP类型的窗体才能更成这种样式,所以也就是说,只有弹出窗体才能用这个函数设置透明度和透明色,主窗体是不行的


DUILIB 篇

一、皮肤路径更改问题

一旦确定了皮肤路径,中途是不能更改皮肤路径的,这样会导致在其它位置的图片找不到!!!!

二、如何实现拖动窗体

在XML中,给Window,加上caption属性,最后一个值就指定可拖动的标题栏的大小,标题栏的顶端默认是窗体顶部

代码:

三、图片的corner属性,九宫格拉伸

首先,要拉伸,必然图片要比窗体要小,才能看到拉伸效果,对于DUILIB的拉伸,说是参考了安桌的九宫格,但我试了试,应该没那么高级,也没搞清楚到底是怎么回事,反正这回,我试验着各种数据,实现了我想要的效果。贴几个博客吧,对我有很大的启发作用。

duilib库的点九技术:http://blog.csdn.net/yanzhibo/article/details/8270266  如果不是它,我根本想不到点九技术

android平台下使用点九PNG技术:http://www.yixieshi.com/ucd/9142.html    详细易懂





你可能感兴趣的:(-------2.2,directUI,-------2.3,Duilib)