第三章:深入文本(3)

简介:

颜色结构
在内部,Color结构以两种不同的方式存储颜色:

 作为类型为double的红色,绿色和蓝色(RGB)值,范围从0到1.名为R,G和B的只读属性公开这些值。
作为类型为double的色调,饱和度和亮度值,其范围也是从0到1.这些值用只读属性(名为Hue,Saturation和Luminosity)进行曝光。

Color结构还支持用于指示不透明度的Alpha通道。 名为A的只读属性公开此值,其范围从透明为0到不透明为1。
所有定义颜色的属性都是只读的。 换句话说,一旦Color值被创建,它就是不可变的。
您可以通过以下几种方法之一创建一个Color值。 三个构造函数是最简单的:

new Color(double grayShade)
new Color(double r, double g, double b)
new Color(double r, double g, double b, double a)

参数的范围可以从0到1.颜色还定义了几种静态创建方法,包括:
Color.FromRgb(double r, double g, double b)
Color.FromRgb(int r, int g, int b)
Color.FromRgba(double r, double g, double b, double a)
Color.FromRgba(int r, int g, int b, int a)
Color.FromHsla(double h, double s, double l, double a)
具有整数参数的两个静态方法假定值的范围从0到255,这是RGB颜色的惯例表示。 在内部,构造器简单地将整数值除以255.0以转换为double。
小心! 你可能会认为你正在用这个调用创建一个红色:

点击(此处)折叠或打开

Color.FromRgb(1, 0, 0)

但是,C#编译器将假定这些参数是整数。 整数FromRgb方法将被调用,第一个参数将被除以255.0,结果几乎为零。 如果要调用具有双重参数的方法,请明确指出。

点击(此处)折叠或打开

Color.FromRgb(1.0, 0, 0)

Color还为字符串中的打包uint格式和十六进制格式定义了静态创建方法,但是这些方法的使用频率较低。
Color结构还定义了Color类型的17个公共静态只读字段。 在下表中,Color结构在内部用来定义这些字段的整数RGB值与相应的Hue,Saturation和Luminosity值一起显示,为了清晰起见,这些值有点圆整:
abc

除了Pink之外,您可能会将其识别为HTML中支持的颜色名称。 第18个公共静态只读字段被命名为Transparent,其中R,G,B和A属性都设置为零。
当人们有机会交互地制定颜色时,HSL颜色模型通常比RGB更直观。 色调循环通过可见光谱(和彩虹)的颜色,以0开始,红色开始,0.33绿色,0.67开始蓝色,1开始回到红色。
“饱和度”指示颜色中色调的程度,范围从0(完全没有色调并且导致灰色阴影)到1(完全饱和)。
亮度是亮度的度量,从黑色的0到白色的1。
第15章“交互式界面”中的颜色选择程序让您更加交互地探索RGB和HSL模型。
颜色结构包括几个有趣的实例方法,允许创建新的颜色,修改现有的颜色:

AddLuminosity(double delta)
MultiplyAlpha(double alpha)
WithHue(double newHue)
WithLuminosity(double newLuminosity)
WithSaturation(double newSaturation)

最后,Color定义了Color类型的两个特殊的静态只读属性

Color.Default
Color.Accent

Color.Default属性在Xamarin.Forms中用于定义视图的默认颜色。 VisualElement类将其BackgroundColor属性初始化为Color.Default,Label类将其TextColor属性初始化为Color.Default。
但是,Color.Default是一个Color值,其R,G,B和A属性都设置为-1,这意味着它是一个特殊的“模拟”值,它本身没有任何意义,但表示实际值是平台特定的。
对于Label和ContentPage(以及大多数派生自VisualElement的类),Color.Default的BackgroundColor设置表示透明。您在屏幕上看到的背景颜色是页面的背景颜色。页面的BackgroundColor属性默认设置为Color.Default,但是该值在不同的平台上有不同的含义.Label的TextColor属性的Color.Default的含义也取决于设备。
以下是页面的BackgroundColor和Label的TextColor隐含的默认配色方案:
abd

在Android,Windows和Windows Phone设备上,您可以为应用程序更改此配色方案。看下一节。
您可以使用多种可能的颜色处理策略:您可以选择以非平台独立的方式进行Xamarin.Forms编程,并避免对任何手机的默认颜色方案作出任何假设。或者,您可以使用有关各种平台颜色方案的知识,并使用Device.OnPlatform指定平台特定的颜色。
但是不要试图忽略所有的平台默认值,并将你的应用程序中的所有颜色设置为你自己的颜色方案。这可能不会如你所愿,因为许多视图使用与操作系统的颜色主题相关的其他颜色,但不通过Xamarin.Forms属性公开。
一个简单的选项是使用Color.Accent属性替代文字颜色。在iPhone和Android平台上,这是一种在默认背景下可见的颜色,但不是默认的文本颜色。在Windows平台上,用户选择的颜色是颜色主题的一部分。
通过将TextColor设置为具有小于1的A属性的Color值,可以使文本变为半透明。但是,如果要使用默认文本颜色的半透明版本,请改用Label的Opacity属性。该属性由VisualElement类定义,默认值为1.对于不同的透明度,将其设置为小于1的值。

目录
相关文章
|
前端开发 开发者
Web前端开发笔记——第二章 HTML语言 第三节 文本格式化标签
Web前端开发笔记——第二章 HTML语言 第三节 文本格式化标签
Web前端开发笔记——第二章 HTML语言 第三节 文本格式化标签
|
存储 C# 数据安全/隐私保护
C#编程-48:文本控件复习笔记_
C#编程-48:文本控件复习笔记_
|
自然语言处理 算法
如何用3行代码简单实现文本情感分析
如何用3行代码简单实现文本情感分析
317 0
|
机器学习/深度学习 存储 自然语言处理
文本特征工程——下篇
文本特征工程——下篇
160 0
文本特征工程——下篇
|
存储 C# 数据安全/隐私保护
C#编程-48:文本控件复习笔记
C#编程-48:文本控件复习笔记
131 0
|
机器学习/深度学习 自然语言处理 并行计算
长文本表示学习概述
摘要: "**如果**你愿意一层一层的剥开我的心·································**那么**你会坐牢的我跟你说"。自然语言就是这么神奇,句子中的长距离特征对于理解语义也非常关键,本文基于Tranformer、RNN、CNN、TCN分别概述近期学界对长句表示学习的诸多方法。 ## 1.长文本表示学习挑战 ​ NLP任务的特点和图像有极大的不同,上图展示了
2091 0
Latex高效写作系列:表格对齐格式
Fancy版本见九天学者的个人博客,关注文集博士干点啥或者搜索微信公众号九天学者及时获取连载更新。 小插曲 推出LaTeX高效写作系列和Word写作不能不说的秘密专辑得感谢我的女神!最近女神要发表论文了,为论文里面的排版和作图在伤脑经。
3066 0
|
Android开发 iOS开发 Windows
|
Android开发 Windows