duilib绝对定位与相对定位

文章目录

  • 前言
  • 1、绝对位置(float=true)
  • 2、窗口
  • 3、布局及控件
  • 4、相对位置(float=false)
  • 5、窗口
  • 6、布局与控件
  • 7、嵌套在布局与控件之中的布局与控件

前言

duilib中窗口,布局,控件等在屏幕上的显示位置都是按照配置好的xml文件规则显示的,每个显示元素的位置大小也需要显式指定,才能呈现出更好看的界面效果,显示元素的位置有两种配置规则,即绝对位置(Duilib中float属性为true时)与相对位置(float属性为false时)。

1、绝对位置(float=true)

首先看一张惨不忍睹的自绘图:
在这里插入图片描述
图中简单描述的是一个屏幕,屏幕里面包含了一个窗口,窗口里面包含了一个显示控件(这个控件可以理解为duilib的各种布局与控件组合),在一般的界面系统屏幕上显示一般是这种模式。

2、窗口

位置:pos(A,B,C,D)

在win32中,界面显示中一般以pos(A,B,C,D)这种方式定位一个窗口的大小,其中A,B表示的是窗口左上角的坐标,C,D表示的是窗口的width和height,参考坐标系为以屏幕左上角为原点,原点右边直线方向为X轴正向,原点下方直线方向为Y轴正向,即矩形左上角坐标(A,B),矩形的大小width=长,height=D。

在duilib的xml文件中对于窗口的配置并没有显式指定pos(A,B,C,D)这样的方式来定位窗体的大小,而是直接size属性(宽,高),即可,这其实是有原因的。duilib的窗口左上角坐标与窗口大小需要在不同的地方设置,即窗口的widthheight直接在xml文件中配置,就是size(宽,高)。窗口的左上角坐标需要在入口函数Create函数中指定,如下代码:

#include "stdafx.h"
#include "MainFrame.h"int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int nCmdShow)
{CPaintManagerUI::SetInstance(hInstance);CWndShadow::Initialize(hInstance);CMainFrame* pFrame = new CMainFrame();if (pFrame == NULL)return 0;DWORD dwStyle = UI_WNDSTYLE_FRAME;dwStyle = dwStyle^WS_MAXIMIZEBOX;pFrame->Create(NULL, _T("mywindows"), dwStyle, WS_EX_STATICEDGE | WS_EX_APPWINDOW, 1, 1, 0, 0);//倒数第3第4个参数可以设置duilib左上角的坐标,倒数第1第2个参数因为继承了WindowImpBase,
//WindowImpBase类中在创建窗口大小时会取xml文件中的窗口大小数据,顾此处两个参数值无效。pFrame->CenterWindow();::ShowWindow(*pFrame, SW_SHOW);CPaintManagerUI::MessageLoop();::CoUninitialize();return 0;
}

3、布局及控件

布局与控件就是duilib窗口中的子显示元素,坐标位置与窗口设置一样,都是以屏幕左上角为参考原点,右与下为正方向。

4、相对位置(float=false)

5、窗口

窗口就没有相对位置只能是绝对位置,因为窗口是一个程序的总体框架。

6、布局与控件

布局的最外层与直接处于窗体内的控件(不包含在布局之中或嵌套在其他控件)。这种结构布局与控件的相对位置是以窗体左上角坐标为参考点

7、嵌套在布局与控件之中的布局与控件

这种结构,相对位置的参考点为以整个嵌套部分的左上角为参考点,即以本身的上一层为参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/26475.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mpVue 微信小程序基于vant-weapp 组件的二次封装TForm 表单组件(修改源码插槽使用)

一、前言 1、mpVue微信小程序不支持动态组件&#xff08;<component> &#xff09; 2、mpVue微信小程序不支持动态属性及事件穿透&#xff08;$attrs和$listeners&#xff09; 3、mpVue微信小程序不支持render函数 二、最终效果 三、配置参数&#xff08;Attributes&…

WEB:lottery

背景知识 dirsearch扫描 题目 原题目应该使用dirsearch扫描发现git泄露然后使用Githack复原的但是攻防世界这边直接把源码给了我们 下载附件可得到 打开文件后进行代码审计 function buy($req){require_registered();require_min_money(2);$money $_SESSION[money];$numbers…

VBA命令及语法列表之字典Dictionaries相关

【分享成果&#xff0c;随喜正能量】真正的修佛之人。首先&#xff0c;得明白自己的来处和归宿&#xff0c;懂得敬畏自己的生命和他人的生命&#xff0c;尽其所能释放善意。学会悲天悯人&#xff0c;渡人的同时渡己&#xff0c;始终走在止于至善的路上。真正的慈悲为怀&#xf…

【unity细节】为什么发射炮弹实例化出来了却无法移动

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 秩沅 原创 收录于专栏&#xff1a;unity细节和bug ⭐为什么发射炮弹实例化出来了却无法移动⭐ 文章目录 ⭐为什么发射炮弹实例化出来…

Pytest+Jenkins+Allure的接口自动化测试

目录 生成Allure 两种形式 一 项目内直接生成不依赖Jenkins 1.先安装好allure 将allure\bin配置到环境变量中 cmd 命令行输入&#xff1a;allure 校验是否安装成功 2. 将json文件生成html文件 执行 allure generate report/ -o report/html其中的report/ 为生成的json路径&a…

带你了解储能行业PCB的设计与应用

高速先生成员---黄刚 高速先生有接触过储能相关的互连设计吗&#xff1f; 突然被粉丝一问&#xff0c;高速先生在大脑里面不停的搜索&#xff0c;的确储能方面的PCB设计板子很少有进来高速先生团队这边的&#xff0c;难道我们真的没怎么做过&#xff1f;这个问题高速先生先不回…

Vue+Ts+Echart使用以及后台接口对接逻辑【实战】

官网传送门 一.echarts介绍 是一个js插件 性能好可流畅远行PC和移动设备 兼容主流浏览器 提供很多图标,用户且可自行修改。 2.使用npm安装 npm install echarts二.echarts基本使用、自定义图例、选择7天日期查询图表数据内容 获取本地时间以及当前时间前几天后几天 /*** 获…

PWM呼吸灯设计

呼吸灯&#xff1a; 呼吸灯是一种特殊的灯光效果&#xff0c;它可以模拟呼吸的效果&#xff0c;即灯光逐渐由暗变亮再由亮变暗&#xff0c;循环往复。这种效果给人一种柔和、舒缓的感觉&#xff0c;常被应用在装饰、照明和显示等领域。 PWM呼吸灯设计&#xff1a; 在数字电路设…

数据结构 ~ 树

什么是树 - tree 一种分层数据的抽象模型&#xff1b; 如&#xff1a;DOM、级联选择、树形控件&#xff0c;js 中没有树 可以用 Object 构建树&#xff1a; const tree {val: a,children: [{val: a-1,children: [{val: a-1-1,children: []}]},{val: a-2,children: [{val: a…

CMS垃圾收集器三色标记-JVM(十二)

上篇文章说了CMS垃圾收集器是赋值清除&#xff0c;所以他不可以碎片整理&#xff0c;于是jvm支持两个参数&#xff0c;几次fullGC之后碎片整理压缩空间。Cms他会抢占cpu资源&#xff0c;因为是并行运行&#xff0c;所以会有浮动垃圾。还有执行不确定性&#xff0c;垃圾收集完&a…

VsCode添加Vue模版代码片段

文章目录 VsCode添加Vue模版代码片段1. 复制一段已有要制作模板的Vue代码&#xff0c;比如&#xff1a;2. 粘贴到下方链接的工具网站&#xff0c;可自动生成模板代码的片段3. VsCode中设置代码片段3-1 打开菜单&#xff1a;首选项-用户片段3-2 出现如下的搜索栏&#xff0c;搜索…

Ubuntu下搭建Redis主从集群

目录 准备实例和配置 开启主从关系 测试配置 搭建的主从集群结构&#xff0c;只有主服务器与客户端进行写操作&#xff0c;通过主从同步数据&#xff0c;从服务器向客户端提供读操作 共包含三个节点&#xff0c;一个主节点&#xff0c;两个从节点。 这里我们会在同一台虚拟机…