GUI之绘画控制
一、绘制的动力
GUI的绘画是根据消息动作驱动的
主循环应该是

二、绘制的过程
绘画过程应该是这样的:
首先窗口存在上下层关系->

在绘制时应该从底部窗口开始绘制,逐一绘制
下面是一些特殊的窗口
1.(模态窗口)需要显示在前面的 不受其他窗口影响的 窗口
该类窗口另外管理,在绘制完前面的窗口后再按照这个数据类中的顺序进行逐一绘制
2.popup与dialog弹出框
对于GUI说,两者区别在于popup窗口需要保存当前界面的样子,而dialog会实时变化
三、特殊的显示效果接口
× 组件的hide/show操作:
1.show: 这个比较简单,设置对应属性,下次绘制的时候进行绘制就能实现show效果
2.hide:由于要考虑到实际显示时各个组件的包含关系,比较复杂。
大致的hide逻辑如下
(1)如果hide的对象是window,查询有没有在它下面的window,并从最前面的window查找哪个是被该window沾边或包含的,刷新两个window之间的window
(2)如果hide的对象是widget,
①如果是聚焦窗口中的组件
刷新其容器父组件,刷新被该组件覆盖的所有组件,刷新覆盖组件所沾边或包含的所有组件
②如果是非聚焦窗口的组件
刷新该组件所在的window以及其上的所有window
GUI之绘画控制的更多相关文章
- 基于Qt Gui的Led控制显示程序
基于arm + linux的嵌入式软件开发,基本上的内容主要是:u-boot的移植,kernel的裁剪和相关驱动程序的设计,root-fs的制作,应用程序的设计,其中,应用程序主要包含两方面的内容:G ...
- opencv鼠标操作及GUI矩形绘画
OpenCV的鼠标操作是通过一个中介函数配合回调函数来实现的.指定鼠标操作消息回调函数的函数为SetMouseCallback. void setMouseCallback(const string& ...
- dat.gui stats.js 通用参数配置及图像统计工具
在网上看到了一个非常好的JS烟雾效果 https://paveldogreat.github.io/WebGL-Fluid-Simulation/看源码时发现了dat.gui很好用. dat.gui ...
- GUI创建各常用控件(一)
首先,作个申明: 1.这是一个野路子非科班的小菜鸟的学习,故诚心欢迎批评指正(同时所述内容可能有误): 2.本人目前使用的Unity3D版本为 5.3.5: 言归正传! 事实上在开发过程中已经很少用G ...
- OO ALV 后台运行时错误:Control Framework: Fatal error - GUI cannot be reached
这个错误的原因,是GUI容器依赖GUI的存在,因为它是在后台运行,没有GUI,因此控制错误. 可以通过做一些编码绕过这个. * ALV Grid DATA: R_GRID TYPE REF TO CL ...
- 使用Unity3D的50个技巧
使用Unity3D的50个技巧 刚开始学习Unity3D时间不长,在看各种资料.除了官方的手册以外,其他人的经验也是非常有益的.偶尔看到老外这篇文章,觉得还不错,于是翻译过来和大家共享.原文地址:ht ...
- MMORPG大型游戏设计与开发(客户端架构 part10 of vegine)
界面是游戏中必不可少的一部分,就算你进入游戏没有看到什么UI窗口,你也不必着急,因为多多少少都会有隐藏着的界面等你去体验.一个好的UI大部分应该归功于设计的人与提供美术支持的人员,因为他们是直接设计U ...
- 创建简单的机器人模型smartcar
前面我们使用的是已有的机器人模型进行仿真,这一节我们将建立一个简单的智能车机器人 smartcar,为后面建立复杂机器人打下基础. 一.创建硬件描述包. cd ~/catkin_ws/srcroscr ...
- 使用Unity3D的50个技巧:Unity3D最佳实践
翻译故事 原文:http://devmag.org.za/2012/07/12/50-tips-for-working-with-unity-best-practices/ 这篇技巧,我自己也在翻译, ...
随机推荐
- sdut 2449走迷宫【最简单的dfs应用】
走迷宫 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_ 题目描述 一个由n * m 个格子组成的迷宫,起点是(1, 1), 终点是(n, m) ...
- html5 notification桌面提醒功能
html5 notification桌面提醒功能 <!DOCTYPE html> <html lang="en"> <head> <met ...
- 7-11使用UNION合并查询
合并查询的语法: SELECT ...FROM 表名一 UNION SELECT ...FROM 表名二 合并查询的特点: 1: 合并表中的列的个数,数据类型数据类型相同或兼容. 2:UNION 默 ...
- 第十二篇:SOUI的utilities模块为什么要用DLL编译?
SOUI相对于DuiEngine一个重要的变化就是很多模块变成了一个单独的DLL. 然后很多情况下用户可能希望整个产品就是一个EXE,原来DuiEngine提供了LIB编译模式,此时链接LIB模式的D ...
- loj 1210 (求最少的加边数使得图变成强连通)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1210 思路:首先是缩点染色,然后重建并且统计新图中的每个点的入度和出度,于是答案就是m ...
- Linux学习笔记(20) Linux系统管理
1.进程管理 进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源. 进程管理的作用有判断服务器健康状态.查看系统中所有进程及杀死进程.一般都可以采用 ...
- Vs2012调试本地windows服务
背景: 在我的工作经历中,我用到了一个我们以前学习中没有接触过的老东西-服务.之所说以前没有接触过,是因为自己没有系统的研究过这东西:之所以又说它是老东西,是因为我们其实早就知道他的存在,经常用它去干 ...
- Blog Starting...
30出头,开始Blog记录学习生活的点滴,待40时再回来一看.
- EventBus的使用,数据传递
通常情况下安卓下数据的传递有下面几种方法: 1.通过intent传递,包括显式意图和隐式意图,广播(Broadcast)和服务都能通过Intent传递 传递的数据类型包括8大基本数据类型 实现P ...
- js 的一点用法
js 中的json对象,ajax返回数据dataType为json否则无法将数据转换成json对象 也就无法通过json字符串转换成对象object,那么他将始终是个字符串,也就无法进行 对象操作. ...