---some words----

1.Alpha:透明度

2.Argb :Alpha red green blue

3.brush: [brʌʃ]    刷子,笔画,笔刷

4.fore 前头

5.Foreground 前景色

6.SolidColorBrush:单色笔刷

7.LinearGradientBrush :线性渐变笔刷

8.Linear:直线的,线性的

9.Gradient  梯度,变化,倾斜

---  the end  ----

一:Color结构体

c#中用Color这个结构体来定义普通的颜色。

Color color = Color.FromArgb(255,0,0,0);

它是用Alpha通道,红色通道,绿色通道,蓝色通道描述颜色。第一个参数是透明度从0-255  透明-不透明

二:Colors类

c#中用Colors这个类 实现一组预定义的颜色。(就是帮你设置了一些基础的颜色,你直接拿来用就行)

Color color = Colors.Black;

三:Brush类

在写UWP的时候,我们习惯用xaml写样式,在给控件的Background,Foreground这些属性赋值的时候,都是直接写颜色的名字,其实xaml在最后会将我们的字符串转化成对应颜色的笔刷。

<Grid Background="Black"
    Name="TestGrid">
</Grid>

这些控件的颜色属性的类型是Brush类型。

四:几种笔刷

SolidColorBrush:纯色笔刷

LinearGradientBrush::线性渐变笔刷

ImageBrush:图像笔刷

这几个类都是Bursh的子类。

这里就介绍第一种:

在后台用代码将上面的Grid的背景颜色改成白色。

 //两种方法实现
TestGrid.Background = new SolidColorBrush(Color.FromArgb(255,255,255,255));
TestGrid.Background = new SolidColorBrush(Colors.White);

 

五:转换

虽然Xaml很方便,但是还是免不了有一些需求,比如要你在后台更改控件的颜色,而你拿到的颜色是#ffffffff 16进制这样的。。既不是Color也不是Brush,想要在后台改颜色就不能像xaml那样写了。你不能将string类型赋值给brush类型。

TestGrid.Background = "#ffffffff";   //这种方法是错误的

我们需要写一个类,用来将string类型的颜色转换成Color类型。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI; namespace One.Converter
{
public class ColorConverter
{
/// <summary>
/// 将16进制的颜色转为成Color类型
/// </summary>
/// <param name="stringColor"></param>
/// <returns></returns>
public Color StringToColor(string stringColor)
{
string src = stringColor;
//因为有些颜色是rgb模式的,没有透明度
if (src.Length == )
{
return Color.FromArgb(,
Byte.Parse(src.Substring(, ), System.Globalization.NumberStyles.HexNumber),
Byte.Parse(src.Substring(, ), System.Globalization.NumberStyles.HexNumber),
Byte.Parse(src.Substring(, ), System.Globalization.NumberStyles.HexNumber));
}
//argb
else if(src.Length==)
{
return Color.FromArgb(
Byte.Parse(src.Substring(, ), System.Globalization.NumberStyles.HexNumber),
Byte.Parse(src.Substring(, ), System.Globalization.NumberStyles.HexNumber),
Byte.Parse(src.Substring(, ), System.Globalization.NumberStyles.HexNumber),
Byte.Parse(src.Substring(, ), System.Globalization.NumberStyles.HexNumber));
}
throw new ArgumentException("Cannot parse the color"); }
}
}

微软自己写的Converter地址:https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/XamlBind/cs/xBindSampleModel/ColorToStringConverter.cs

我写的简单一点,主要给自己项目用的。

UWP brush的更多相关文章

  1. Customize Acrylic Brush in UWP Applications(在UWP中自定义亚克力笔刷)

    原文 Customize Acrylic Brush in UWP Applications(在UWP中自定义亚克力笔刷) Windows 10 Fall Creators Update(Build ...

  2. (UWP)通过编写算法实现在地图中的渐变路径

    目前的一个App中需要实现这个需求,但是在UWP自带的Bing Map中,绘制的MapPolyline的StrokeColor的类型是Windows.UI.Color,也就是说一条MapPolylin ...

  3. UWP中的Direct2D

    介绍 DirectX一直是Windows平台中高性能图形的代名词,自Win7开始,微软又推出了Direct2D技术,包装于Direct3D,但专注于2D图形,并且准备取代GDI这样的传统2D图形技术. ...

  4. UWP: 掌握编译型绑定 x:Bind

    在 UWP 开发中,我们在进行数据绑定时,除了可以使用传统的绑定 Binding,也可以使用全新的 x:Bind,由于后者是在程序编译时进行初始化操作(不同于 Binding,它是在运行时创建.初始化 ...

  5. [UWP]实用的Shape指南

    在UWP UI系统中,使用Shape是绘制2D图形最简单的方式,小到图标,大到图表都用到Shape的派生类,可以说有举足轻重的地位.幸运的是从Silverlight以来Shape基本没有什么大改动,简 ...

  6. [UWP]浅谈按钮设计

    一时兴起想谈谈UWP按钮的设计. 按钮是UI中最重要的元素之一,可能也是用得最多的交互元素.好的按钮设计可以有效提高用户体验,构造让人眼前一亮的UI.而且按钮通常不会影响布局,小小的按钮无论怎么改也不 ...

  7. UWP:使用Behavior实现Button点击动态效果

    废话不多说,先上效果 没有做成安卓那种圆形的原因是...人家真的不会嘛... 好了下面是正文: 首先在工程中引入Behavior的库,我们使用Nuget. 在项目->引用上点击右键,点击管理Nu ...

  8. [UWP]创建一个进度按钮

    1. 前言 最近想要一个进度按钮. 传统上UWP上处理进度可以这样实现,首先是XAML,包括一个ProgressBar和一个按钮: <StackPanel Orientation="H ...

  9. win10 uwp 进度条 WaveProgressControl

    昨天看到了有个大神做出好看的进度条样式,于是我就去抄袭他的代码,但是发现看不懂,于是本文主要翻译就是大神说这个控件如何做. 本文翻译 https://stackoverflow.com/a/46057 ...

随机推荐

  1. Akka(23): Stream:自定义流构件功能-Custom defined stream processing stages

    从总体上看:akka-stream是由数据源头Source,流通节点Flow和数据流终点Sink三个框架性的流构件(stream components)组成的.这其中:Source和Sink是stre ...

  2. JavaScript实现省市联动

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  3. JavaWeb程序连接SQLserver数据库

    声明:一直以来都以为javaweb程序连接数据库是一个很高大上很难的问题,结果今天学习了一下,不到两个小时就解决了,所以总结一篇博客. JavaWeb程序连接SQLserver数据库分为一下步骤: 1 ...

  4. C语言中复数运算及调用blas,lapack中复数函数进行科学计算

    C语言中常用的数据类型主要int, float ,double ,char 等,但在科学运算中复数扮演着重要角色.这里讲下C语言中的复数运算以及如何调用blas,lapack库中的复数函数来进行科学计 ...

  5. 深入剖析java迭代器以及C#迭代器!

    目录: 知道迭代器接口Iterable 为什么java的for增强可以自动迭代 那些类可以被迭代 通过什么方法迭代 1.知道迭代器接口Iterable 解析: 迭代器(iterator)是一种对象,它 ...

  6. python re group()

    python group() 正则表达式中,group()用来提出分组截获的字符串,()用来分组 import re a = "123abc456" print re.search ...

  7. MongoDB学习之路(四)

    MongoDB插入文档 MongoDB使用insert()或save()方法向集合中插入文档. db.COLLECTION_NAME.insert(document); For instance &g ...

  8. 集美大学网络1413第十三次作业成绩(团队八) -- 第二次项目冲刺(Beta阶段)

    题目: 团队作业8--第二次项目冲刺(Beta阶段) 团队作业8-成绩:  团队/分值 新加入成员 角色 技术特点 改善的功能. 原因. bug 新增功能. 方法. 如何实现 团队分工改进. 原因 改 ...

  9. java可访问修饰符

    修饰符 同一个类中 同一个包中 不同包的子类 不提供包的非子类 private √ friendly(省略) √ √ protected √ √ √ public √ √ √ √

  10. 201521123104《Java程序设计》第7周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下: pu ...