duilib corner属性的贴图技巧——让图片自动贴到控件的的某一边或者一角并自适应控件的大小
转载请说明原出处,谢谢~~
Duilib给控件贴图功能可以附带多个属性,各个属性的配合可以达到许多效果。以下是duilib支持的所有贴图属性:
贴图描述:
Duilib的表现力丰富很大程度上得益于贴图描述的简单强大。Duilib的贴图描述分为简单模式和复杂模式两种。
简单模式使用文件名做为贴图描述内容,在这种方式下,此图片将会以拉伸方式铺满控件。
复杂模式使用带属性的字符串表示贴图方式,既支持从文件中加载图片,也可以从资源中加载,具体如下:
如果是从文件加载,设置file属性,如file='XXX.png',不要写res和restype属性
如果从资源加载,设置res和restype属性,不要设置file属性
dest属性的作用是指定图片绘制在控件的一部分上面(绘制目标位置)
source属性的作用是指定使用图片的一部分
corner属性是指图片安装scale9方式绘制
mask属性是给不支持alpha通道的图片格式(如bmp)指定透明色
fade属性是设置图片绘制的透明度
hole属性是指定scale9绘制时要不要绘制中间部分
xtiled属性设置成true就是指定图片在x轴不要拉伸而是平铺,ytiled属性设置成true就是指定图片在y轴不要拉伸而是平铺。
其中source、dest、corner属性是最常用的。我个人觉得九宫格属性corner是最好用也是最强的贴图属性。用好它可以省不少事。还不知道九宫格的朋友可以看这篇文章:九宫格的介绍
这里说一个小技巧:有时候我们贴图时,图片的大小小于控件本身的大小,而我们需要将图片贴到控件的某个位置上,这时通常会用dest属性来解决这个问题。但是dest属性有个缺点就是贴的位置是固定的,他不可以让图片随控件的大小改变而自动改变图片的位置和大小。如果要把图片贴到控件的四个边的其中一个,或者贴到某个角上,使用corner属性可以完美实现,而且贴图是自适应控件的大小改变的。举个例子,如图:
可以看到这个窗体的背景图片是绿色的草原,这个窗体的大小是840x600,而这个背景图的大小是840x320,为了不让图片纵向拉伸而变难看,需要把他贴到窗体的顶边上,这是如果用dest属性的确是可以实现。但是问题在于,当我改变了窗体的大小时,图片依然会贴到“0,0,840,320”的位置,其他的位置是背景色,如图:
而如果要让背景图随着窗体的大小该改变而自适应,就需要用c++代码手动控制dest属性。但是如果使用corner属性就可以完美解决这个问题。这样使用corner属性:
bkimage="file='SKIN_PIC_2.png' corner='0,320,0,0'"
把第二个字段设置为图片的高度,其他为0,这样duilib就会把图片直接贴到控件的顶部,而且现在窗体随便改变大小,背景图都是自适应的。这也算是九宫格属性的妙用。同样的道理可以让图片一直贴到窗体的左边:
bkimage="file='SKIN_PIC_2.png' corner='840,0,0,0'"
或者左上角:
bkimage="file='SKIN_PIC_2.png' corner='840,320,0,0'"
右下角:
bkimage="file='SKIN_PIC_2.png' corner='0,0,840,320'"
左下角:
bkimage="file='SKIN_PIC_2.png' corner='840,0,0,320'"
左边:
bkimage="file='SKIN_PIC_2.png' corner='840,0,0,0'"
明白了这个道理后就可以任意贴到控件的四边或者四角,并且自适应控件了。
Redrain 2014.8.29
duilib corner属性的贴图技巧——让图片自动贴到控件的的某一边或者一角并自适应控件的大小的更多相关文章
- duilib bkimage 属性
duilib bkimage 属性<Attribute name="bkimage" default="" type="STRING" ...
- 学会这些Python美图技巧,就等着女朋友夸你吧
一.前言 Python中有许多用于图像处理的库,像是Pillow,或者是OpenCV.而很多时候感觉学完了这些图像处理模块没有什么用,其实只是你不知道怎么用罢了.今天就给大家带了一些美图技巧,让你的图 ...
- duilib relativepos属性导致控件错误的bug修复
转载请说明出处,谢谢~~ 我在仿酷狗音乐播放器的开发日志系列里,曾经提到了这个bug,文章地址为:http://blog.csdn.net/zhuhongshu/article/details/381 ...
- photoshop 切图技巧
前端切图技巧 手动切图 参考线切图 精准切图 自动切图 原文地址 http://www.cnblogs.com/w-wanglei/p/5598336.html
- Qt+QGIS二次开发:自定义类实现查询矢量数据的属性字段值(图查属性)
在GIS领域,有两种重要的查询操作,图查属性和属性查图. 本文主要介绍如何在QGIS中通过从QgsMapToolIdentify中派生自定义类实现查询矢量数据的属性字段值(图查属性). 重点参考资料: ...
- 前端PS常用切图技巧
前言:前端涉及到的 ps 操作不算复杂,基本上就是切图,本文总结了常用的几种切图技巧. 工具:photoshop cs6 . photoshop cc 1. 传统切图 01 这是最笨的一种方法,核心就 ...
- Eclipse用法和技巧六:自动生成get和set方法1
java的类中,除了常量声明为静态且公有的,一般的对象数据作用域,都是声明为私有的.这样做能保护对象的属性不会被随意改变,调试的时候也会方便很多:在类的公有方法中大一个调用栈就能看到哪里改了属性值.声 ...
- AngularJS进阶(三十)AngularJS项目开发技巧之图片预加载
AngularJS项目开发技巧之图片预加载 绪 项目(移动端采用Ionic 框架)开发完毕,测试阶段发现移动APP首页的广告图片(图片由服务器端返回相应url地址)很难加载,主要原因还是网速.如下图左 ...
- 移动端适配之雪碧图(sprite)背景图片定位
为了减少网络请求个数量,提高网站的访问速度,我们一般都会把一些小的图片合并成一张sprite图,然后根据background-position来进行定位.在web端由于是固定的大小与left .top ...
随机推荐
- BZOJ 1982 Moving Pebbles
首先我们假设只有两堆, 容易发现当且仅当两堆相等时,先手必败 否则先手必胜 然后我们猜测一下原因: ->当两堆相等时,无论先手怎么做,后手总能使两堆相等,且必败态为0,0 推广一下: 当所有的石 ...
- 李洪强iOS开发支付集成之微信支付
iOS开发支付集成之微信支付 微信支付也是需要签名的,也跟支付宝一样,可以在客户端签名,也可以在后台签名(当然,为了安全还是推荐在服务器上做签名,逻辑也比较好理解). 1 - 集成前首先要看看文档 开 ...
- lintcode:First Missing Positive 丢失的第一个正整数
题目 丢失的第一个正整数 给出一个无序的整数数组,找出其中没有出现的最小正整数. 样例 如果给出 [1,2,0], return 3 如果给出 [3,4,-1,1], return 2 挑战 只允许时 ...
- [Unity菜鸟] 摄像头
1. 连接外置摄像头 2. Unity3D中调用外接摄像头,并保存为图片文件
- jQuery编程基础精华01(jQuery简介,顶级对象$,jQuery对象、Dom对象,链式编程,选择器)
jQuery简介 什么是jQuery? jQuery就是一个JavaScript函数库,没什么特别的.(开源)联想SQLHelper类 jQuery能做什么?jQuery是做什么的? jQuery本身 ...
- vss的ss.ini丢失或损坏导致的vss无法登录错误
vss的ss.ini丢失或损坏导致的vss无法登录错误 Written in 2007-07-03 18:17 在vss使用过程中,不知道什么原因,会导至vss目录中的ss.ini文件损坏,此文件位于 ...
- Nginx+Tomcat+Memcached负载均衡集群服务搭建
操作系统:CentOS6.5 本文档主要讲解,如何在CentOS6.5下搭建Nginx+Tomcat+Memcached负载均衡集群服务器,Nginx负责负载均衡,Tomcat负责实际服务,Memc ...
- Checked&Unchecked Exception
Java 中定义了两类异常: 1) Checked exception: 这类异常都是Exception的子类 .异常的向上抛出机制进行处理,如果子类可能产生A异常,那么在父类中也必须throws A ...
- 02-语言入门-02-ASCII码排序
题目地址: http://acm.nyist.net/JudgeOnline/problem.php?pid=4 描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个 ...
- sdut 2934 人活着系列之平方数 (完全背包变形)
题目链接 分析:完全背包的变形,每一层的d[]数组代表这一层的这个数新加入以后所构成的val的种类. #include <iostream> #include <cstdio> ...