WEB开发网
开发学院软件开发VC 让UI开发轻松而快乐,用SonicUI引擎实现常见UI效果... 阅读

让UI开发轻松而快乐,用SonicUI引擎实现常见UI效果

 2009-01-17 19:39:14 来源:WEB开发网   
核心提示: 除了委托绘制以外,你还可以向画布上直接添加UI对象,让UI开发轻松而快乐,用SonicUI引擎实现常见UI效果(5),画布支持的对象有:ISonicImage, ISonicString, ISonicPaint5.异形窗体(包括像素级透明异形窗体)异形窗体也是UI特效中经常需要使用的技术

除了委托绘制以外,你还可以向画布上直接添加UI对象,画布支持的对象有:ISonicImage, ISonicString, ISonicPaint

5.异形窗体(包括像素级透明异形窗体)

异形窗体也是UI特效中经常需要使用的技术,常见的有两种实现方法。一种方法是根据图片裁剪出一个rgn,然后调用SetWindowRgn,另一个方法是将窗体设为WS_EX_LAYERED属性,调用SetLayeredWindowAttributes或UpdateLayeredWindow实现透明裁剪。前一种方法效率较低,而且拖动窗体时会出现难看的残影,后一种方法表现效果更好,拖动时可以避免残影出现,但不能作用于WS_CHILD属性的窗体。二者各有优劣。SonicUI同时提供了这两种实现方法,可以根据情况选择。

方法1:...
// ISonicImage * pImg
SetWindowRgn(hWnd, pImg->CreateRgn());
方法2:...
// ISonicImage * pImg
// ISonicWndEffect * pEffect
pEffect->Attach(hWnd, TRUE);  // 使用像素级alpha模式attach
pEffect->SetShapeByImage(pImg);
让UI开发轻松而快乐,用SonicUI引擎实现常见UI效果

图二:异形窗体效果图

值得一提的是,如果使用UpdateLayeredWindow做窗体的像素级alpha特效,文字输出就成为了一个麻烦,因为gdi的文字输出函数是不带alpha通道的,直接TextOut上去无法正常表现。不过ISonicString可以帮你解决这一难题,我在内部已经为文字增加了alpha通道,可以很好的适应背景。

结束语:引擎中还有滚动字幕组件,动画组件等常用的UI表现组件,限于篇幅就不一一介绍了,请大家参照ISonicUI.h中的说明自己试用。设计这个引擎时的基本原则就是轻便,高效,如果大家在使用过程中有什么好的建议或需求,也敬请联系我,帮助我完善这个引擎。因为引擎完整实现代码有数万行,而且现在还属于公司财产,就暂不公布完整源码了,但对某些技术实现细节有兴趣的朋友,可以与我联系,共同学习进步。

上一页  1 2 3 4 5 

Tags:UI 开发 轻松

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接