一、设置窗体透明度和指定透明色(如指定了黑色,即所有黑色的部分将会变得透明)
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类型的窗体才能更成这种样式,所以也就是说,只有弹出窗体才能用这个函数设置透明度和透明色,主窗体是不行的
一、皮肤路径更改问题
一旦确定了皮肤路径,中途是不能更改皮肤路径的,这样会导致在其它位置的图片找不到!!!!
二、如何实现拖动窗体
在XML中,给Window,加上caption属性,最后一个值就指定可拖动的标题栏的大小,标题栏的顶端默认是窗体顶部
代码:
<Window size="314,674" sizebox="4,4,4,4" mininfo="314,674" maxinfo="600,800" caption="0,0,0,500" >
三、图片的corner属性,九宫格拉伸
首先,要拉伸,必然图片要比窗体要小,才能看到拉伸效果,对于DUILIB的拉伸,说是参考了安桌的九宫格,但我试了试,应该没那么高级,也没搞清楚到底是怎么回事,反正这回,我试验着各种数据,实现了我想要的效果。贴几个博客吧,对我有很大的启发作用。
duilib库的点九技术:http://blog.csdn.net/yanzhibo/article/details/8270266 如果不是它,我根本想不到点九技术
android平台下使用点九PNG技术:http://www.yixieshi.com/ucd/9142.html 详细易懂