颜色模式

Flutter适配深色模式(DarkMode):看!你要的黑是这个黑吗?

孤人 提交于 2020-01-14 00:27:31
1.起因 最近在做适配深色模式(DarkMode),也可以说是实现夜间模式的功能。 相信许多iOS的同学最近都比较关注,毕竟iOS 13上个月推送更新了。 说适配的原因是因为在iOS 13 和 Android 10系统上它都属于新特性。适配的目的是为了达到应用的主题随着系统主题模式的切换而变化,给用户更好的一致性体验。与它类似的就是系统语言的设置,当系统设置某种语言时,应用内的文字也相应变化。 好在Flutter也提供了适配的入口,使得我们可以一次适配两个平台。我手上的小米mix2s虽然是Android 9 的,没想到也能适配。 2.准备工作 首先是规范问题,标题、副标题、分割线、各种背景等颜色,以及深色模式下相对应的颜色一定要先规范起来。否则你自己不仅被这些颜色搞得眼冒金星,同时应用也没有一个统一的风格。 ###3.适配开始 1.全局调整 Flutter 在 MaterialApp中提供了theme 与 darkTheme两个入口让我们设置两种模式下的颜色及文字样式。接收的ThemeData中近乎涵盖了所有Material Widget中所使用的颜色及主题。(Cupertino系列组件官方还在适配中,所以Flutter版本1.9.1暂不支持。) 通过配置theme 与 darkTheme可以让我们省去很多的判断代码,比如我的分割线在不同模式下是两种不同颜色,我不可能每使用一次

颜色空间

我是研究僧i 提交于 2020-01-06 00:09:06
颜色通常用三个相对独立的属性来描述,三个独立变量综合作用,自然就构成一个空间坐标,这就是颜色空间。而颜色可以由不同的角度,用三个一组的不同属性加以描述,就产生了不同的颜色空间。但被描述的颜色对象本身是客观的,不同颜色空间只是从不同的角度去衡量同一个对象。 颜色空间按照基本结构可以分两大类:基色颜色空间和色、亮分离颜色空间。前者的典型是 RGB,还包括 CMY、CMYK、CIE XYZ 等;后者包括 YCC/YUV、Lab、以及一批“色相类颜色空间”。CIE XYZ 是定义一切颜色空间的基准,很奇妙的是,它即属于基色颜色空间,也属于色、亮分离颜色空间,是贯穿两者的枢纽。色、亮分离颜色空间中的子类型“色相类颜色空间”,是把颜色分成一个表亮属性,和两个表色属性,其中有一个表色属性是色相,而色相以外的两个属性可以选用不同的变量来定义,而色相的概念不变,因此就构成一族共同使用色相属性,另加表亮属性和表色属性各一个组成的颜色空间,它们是颜色空间中的一个家族,暂且统称为 HSB 颜色空间。 RGB颜色空间是一种大的分类,具体而言RGB空间还包含多种空间,其中sRGB是HP和Microsoft联合制定的标准RGB空间,除此之外还有Adobe RGB,Apple RGB,ColorMatch RGB等等,他们通过不同的方式表示RGB三种颜色,使得它们具有不同的色彩宽度,GAMMA值也是不一样的

MFC中的CDC 绘图(2)

北城以北 提交于 2020-01-01 01:32:48
.面色(刷) 在Windows中,面状图必须用刷(brush)来填充,所以面色是由刷色来确定的。MFC中的刷类为CBrush(它也是CGDIObject的派生类),刷的创建与使用的步骤与笔的相似。 构造函数有4个: CBrush( ); // 创建一个刷的空对象 CBrush( COLORREF crColor ); // 创建颜色为crColor的实心刷 CBrush( int nIndex, COLORREF crColor ); // 创建风格由nIndex指定且颜色为crColor的条纹(hatch孵化)刷,其中nIndex可取条纹风格(Hatch Styles)值: 符号常量 数字常量 风格 HS_HORIZONTAL 0 水平线 HS_VERTICAL 1 垂直线 HS_FDIAGONAL 2 正斜线 HS_BDIAGONAL 3 反斜线 HS_CROSS 4 十字线(正网格) HS_DIAGCROSS 5 斜十字线(斜网格) CBrush( CBitmap* pBitmap ); // 创建位图为pBitmap的图案刷 如:pDC->FillRect( &rect, new CBrush( RGB(r, g, b) ) ); 与构造函数相对应,有多个创建不同类型刷的成员函数: BOOL CreateSolidBrush( COLORREF crColor );

案例分析:设计模式与代码的结构特性

折月煮酒 提交于 2019-12-08 18:08:30
桥接模式(Bridge模式) 桥接模式的定义和特点 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 桥接模式的优点是:由于抽象与实现分离,所以扩展能力强; 其实现细节对客户透明。 桥接模式的缺点是:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编 程, 这增加了系统的理解与设计难度。 在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。 当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题 二、桥接模式的结构和实现 可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。 1. 模式的结构 桥接(Bridge)模式包含以下主要角色。 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。 扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法

案例分析:设计模式与代码的结构特性

ⅰ亾dé卋堺 提交于 2019-12-08 14:57:29
一、抽象工厂模式 在介绍抽象工厂模式,我们先简单回顾一下简单工厂模式与工厂方法模式。 1.工厂模式:针对一个系列的类,它们有很多的共同点,因此可以将他们称为一个系列的产品,也就是一个系列的类。因此使用一个工厂,用一个工厂创建函数去创建某个具体的类。 实现流程如下: 系列类—>工厂—>创建函数—>某个具体的类 2.工厂方法模式:针对一系列的类,使用一个抽象的工厂接口,之后为每个具体的类都编写一个工厂类,随后在每一个类中使用创建函数创建具体类。 实现流程如下: 系列类——>抽象工厂接口—>多个与系列对应的工厂类—>每个类的创建函数—>某一个具体的类 回顾这些我们可以看出,简单工厂模式是笼统的承包服务,不管有多少个类需要创建,全部都由一个工厂去完成;而工厂函数模式则是定制化服务,每一个工厂只能创建某一种特定的类,但是这些工厂统一遵循即抽象工厂接口的创建方法。 抽象工厂模式即 是 “分类之后的一对一服务”,我们有多个系列的类需要创建,让某一个工厂专门负责某一类对象的创建,另一个工厂负责另外一类的对象创建。简单来说,简单工厂模式是集中式生产;工厂方法模式是分散式生产;而抽象工厂模式则是对于同一系列的集中式生产,而对于不同系列的分散式生产(结合前两者的优点)。 二、抽象工厂模式的使用情景 当出现一系列的产品族,且这些类比较容易划分时,设计模式可以采用使用抽象工厂模式。原因如下

<el-menu>菜单标签(里面可以包括:<el-submenu>和<el-menu-item>)

只谈情不闲聊 提交于 2019-12-05 11:07:19
<el-menu> 1、router属性,若使用router属性menu-item的index将对应router的path属性 2、mode,下拉菜单的模式分为horizontal和vertical两种模式 3、background-color,background-color属性为下拉菜单整体的背景颜色 4、text-color,text-color为下拉菜单中的文字的颜色 5、active-text-color为选中的菜单的颜色 <el-menu>标签中可以有el-submenu和el-menu-item标签组成 demo <el-menu :router="true" mode="horizontal" background-color="#1c213f" text-color="#fff"> <el-submenu index="1"> <template slot="title"> <i class="el-icon-menu"></i> </template> <el-menu-item index="1-1">选项一</el-menu-item> <el-submenu index="2"> <template slot="title">选项二</template> <el-menu-item index="2-1">选项二-一</el-menu-item> </el

AI-图像基础知识

筅森魡賤 提交于 2019-12-04 19:11:31
    目前人工智能 A rtificial I ntelligence主要分为两大分支: 计算机视常见: C omputer V ision,简称CV   CV主要是研究如何让机器看懂世界的一种技术,通过各种光学传感器来代替人眼对目标对象进行识别,跟踪和检测,使机器能够处理输入的各种图像和视频。 自然语言处理: N atural L anguage P rocessing,简称NLP   NLP主要是研究如何机器读懂世界的一种技术,最终执行如语言翻译、智能客服等。     因为目前所从事的项目都是基于CV的,所以我来总结一下CV的相关知识。从上述简介可以看CV是要让机器看懂世界,那么最直观的就是传递图像或视频给机器。那么我们就需要了解图像和视频的基本知识,如下所示: 图像基础知识     说到图像,最直观的就是一张静态图片。而图像又可以分为 位图图像 和 矢量图像 。 位图图像     位图图像又称 点阵图像 或 栅格图像 ,是指由很多个点按照指定的颜色和一定的顺序组成的矩形网络。当一张位图持续放大到一定比例后,便可以很清楚看到每个矩形网格。如下所示: 常见的图像格式扩展名为:JPG、BMP、PNG、JPEG等 矢量图像     矢量图也称为面向对象的图像或绘图图像,通常由点、直线或多边形等基于数学对象的几何图表示图像。其最大的特点是放大图像后不会失真且和分辨率无关。如下所示:

23种设计模式(C++)之 桥接(Bridge)模式

◇◆丶佛笑我妖孽 提交于 2019-12-04 05:41:48
23种设计模式(C++)之 桥接(Bridge)模式 23种设计模式(C++)之 桥接(Bridge)模式 意图 场景 角色 实例 23种设计模式(C++)之 桥接(Bridge)模式 意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 场景 比如,画图工具中铅笔的粗细和颜色。假设有三种粗细(0.5mm, 0.8mm, 1.0mm)和四种颜色(红,黄,蓝,黑),如果粗细与颜色合在一起,我们则需要准备十二个类来实现所有情况;如果粗细与颜色分开,我们只需要准备七个类即可实现所有情况。 角色 Abstraction: 定义抽象类的接口 维护一个指向Implementor类型对象的指针 RefinedAbstraction 扩充由Abstraction定义的接口。 Implementor 定义实现类的接口, 供RefinedAbstraction调用。该接口不一定要与Abstraction的接口完全一致。一般,Implementor接口仅提供基本操作,而Abstraction则定义了基于这些操作的较高层次的操作。 ConcreteImplementor 实现Implementor 接口并定义它的具体实现。 实例 以车为例,车可分为电动车和油动车,又可分为白色车和黑色车。 定义实现类接口 class CarColor { public : virtual void

10.设计模式之八:桥接模式【结构型模式】

扶醉桌前 提交于 2019-12-04 03:58:57
在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。 当然,这样的例子还有很多,如不同颜色和字体的文字、不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好地解决这些问题。 定义与特点 桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 桥接(Bridge)模式的优点是: 由于抽象与实现分离,所以扩展能力强; 其实现细节对客户透明。 缺点是:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。 结构与实现 可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。 1. 模式的结构 桥接(Bridge)模式包含以下主要角色。 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。 扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。 实现化

印刷品 规格 尺寸 颜色

匿名 (未验证) 提交于 2019-12-03 00:37:01
印刷品点缀着我们的生活,为我们的生活增添了绚丽的色彩。然而,印刷是一门复杂的技术,了解印刷工艺及一些相关知识是必不可缺的因素。不懂印刷的人设计的东西最难印,那么设计师要了解的印刷专业知识有哪些呢?一起来看一下吧! 第一?色彩 1.色彩的分类 丰富多样的颜色可以分成两个大类:无彩色系和有彩色系。 有彩色系的颜色具有三个基本特性:色相、纯度(也称彩度、饱和度)、明度。在色彩学上也称为色彩的三大要素或色彩的三属性。 饱和度为0的颜色为无彩色系。 (1)无彩色系 无彩色系是指白色、黑色和由白色黑色调合形成的各种深浅不同的灰色。无彩色按照一定的变化规律,可以排成一个系列,由白色渐变到浅灰、中灰、深灰到黑色,色度学上称此为黑白系列。黑白系列中由白到黑的变化,可以用一条垂直轴表示,一端为白,一端为黑,中间有各种过渡的灰色。纯白是理想的完全反射的物体,纯黑是理想的完全吸收的物体。可是在现实生活中并不存在纯白与纯黑的物体,颜料中采用的锌白和铅白只能接近纯白,煤黑只能接近纯黑。无彩色系的颜色只有一种基本性质――明度。它们不具备色相和纯度的性质,也就是说它们的色相与纯度在理论上都等于零。色彩的明度可用黑白度来表示,愈接近白色,明度愈高;愈接近黑色,明度愈低。黑与白做为颜料,可以调节物体色的反射率,使物体色提高明度或降低明度。 (2)有彩色系 彩色是指红、橙、黄、绿、青、蓝、紫等颜色