<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
现在很多GUI的窗口在显示的时候,都有淡入和淡出的效果.或者是飞入/飞出的效果(是叫飞入飞出吗?呵呵.). 也就是说1:可以自由控制窗口在两个状态间进行融合. 2: 能自由控制窗口的变换--旋转和缩放等.
为此我把窗口独立成一个个状态:
struct _XUI_API_ xuiWindowState_t
{
char m_Name[32];
xColor_4f m_color;
xColor_4f m_textcolor;
xuiWindowBorder_t m_border;
xuiRegion m_Region;
};
再定义一个混合器
class _XUI_API_ xuiWindowStateBlender
{
xuiWindowState_t m_Start;
xuiWindowState_t m_End;
long m_time;
long m_totalTime;
xuiWindow* m_pWindow;
public:
xuiWindowStateBlender(xuiWindow* pWindow);
virtual ~xuiWindowStateBlender();
virtual bool update(long passedTime);
virtual bool isInBlending() const;
virtual bool stop();
virtual bool setState(xuiWindowState_t* pStartState , xuiWindowState_t* pEndState , long _time);
virtual bool setState(xuiWindowState_t* pEndState , long _time);
};
这些状态都可以写在xml里. 比如"normal"状态, "hide"状态. 那么窗口从隐藏到显示的变换过程就是hide 到 normal的变化过程.
以下为show的代码
xuiDialog::show()
{
xuiWindowState _hideState = findState("hide");
xuiWindowState _normalState = findState("normal");
m_pWinStateBlender->setState(hideState , normalState , 200);//200 ms混合完毕.
}
以下为按钮按下的处理
xuiButton::onLButtonDown()
{
xuiWindowState _pressState = findState("press");
xuiWindowState _normalState = findState("normal");
m_pWinStateBlender->setState(pressState , normalState , 200);//200 ms混合完毕.
}
这样的代码.能够基本把所有状态切换的过程全部统一起来. 已经能完成alpha过渡,位置过渡等. 不过要完成两个图片融合还需要再绘制的时候做一些额外的事情.
对于旋转等效果.我们可以用同样的方式处理xuiWindowTransform . 为窗口引入一个xuiWindowTransform的对象表示窗口的变换, 用xuiWindowTransBlender来控制这个变换. 可以把大部分和窗口变换有关的代码统一起来.
分享到:
相关推荐
blender3.0最新版本
blender插件
实时会话登录用户:实时密码:(无密码)Blender-boot设计为双引导Linux发行版。 在Blender已经打开的情况下,它可以直接引导到一个明亮的环境中。 它具有Dropbox和UbuntuOne,用于保存文件以在主操作系统中轻松打开...
检查blender-v2.83-release分支。 2.92是当前的稳定版本。 检查blender-v2.92-release分支。 此插件的master分支在镜像,该分支将成为2.93。 旧版2.79支持 该插件的最终版本具有对Blender 2.79的旧支持,可在。 ...
Docker中的Blender 用于无头或分布式运行Blender的Docker容器的集合 :sparkles: • :memo: • :label: • :hammer_and_wrench: • :whale: 入门 通过运行generate.py脚本可以自动生成此存储库中的图像。 该脚本使用...
python库。 资源全名:blender-basico-0.1.9.tar.gz
分享Blender视频教程——《Blender建模进阶教程》,课程重点讲解渲染 、着色器、动画。 《Blender建模进阶教程》主要内容包含以下方面: 1- 光照 / 摄像机 2- 渲染 Eevee / Cycles 3- 场景搭建演示 4- 着色器 / ...
blender:blender-2.66a-windows32.exe
Blender-2.8.1 官方安装包,针对国内部分网络无法下载官网 blender-2.81-windows64.msi 问题
资源来自pypi官网。 资源全名:blender-id-oauth-client-0.9.3.tar.gz
blender-4.0.0-windows-x64安装包 3d建模 雕刻 材质 渲染 1.Blender完整集成的创作套件,提供了全面的 3D 创作工具; 2.Blender支持跨平台操作,可以工作在所有主流的 Windows(XP、Vista、7、8)、Linux、OS X 等众多...
嗨,我是宫坂和泉 :raccoon: --- / --- / --- / --- / --- / --- / --- / --- / --- / --- / --- / --- /- -/ --- / --- / --- / --- / --- / --- / --- / --- / --- / --- / --- / --- / 在日本出生和长大。...
cats-blender-plugin-源码.rar
blender-rig-ui Blender 2.80的插件,用于可定制的绑定界面安装将存储库下载为ZIP,然后在Blender中:编辑->首选项->附加组件->安装...->选择blender-rig-ui.zip 如果不起作用,请检查Appdata/Roaming/Blender ...
资源来自pypi官网。 资源全名:blender-stubs-3.0.0.24.dev1301728537.tar.gz
cd ~ /blender-build git clone https://github.com/wookay/blender 根据您的环境进行编辑() 适用于macOS的Building Blender 自定义链接 cd ~ /blender-build/build_darwin/bin/blender.app/Contents/...
我衷心希望也许有人会对这个主题表达兴趣,并且我们最终将为未来的Blender创建一个真正的,独特的,百万分之一的系统,用于自动口型同步。 现在,我们有这个! 会说话的头! 啊,你问,为什么要“说话的人”? 这个...
Blender-linux安装包
3D-blender-compile.zip,编译Blender 2.8的Docker环境,3D建模使用专门的软件来创建物理对象的数字模型。它是3D计算机图形的一个方面,用于视频游戏,3D打印和VR,以及其他应用程序。
文件分流。...blender-skeletal-meshes?97569-The-trials-and-tribulations-of-Blender-amp-Skeletal-Meshes=)(https://www.dropbox.com/s/4xcvscam1foo9zz/io_scene_fbx_277fixed.zip?dl=0)