UWP brush
---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的更多相关文章
- Customize Acrylic Brush in UWP Applications(在UWP中自定义亚克力笔刷)
原文 Customize Acrylic Brush in UWP Applications(在UWP中自定义亚克力笔刷) Windows 10 Fall Creators Update(Build ...
- (UWP)通过编写算法实现在地图中的渐变路径
目前的一个App中需要实现这个需求,但是在UWP自带的Bing Map中,绘制的MapPolyline的StrokeColor的类型是Windows.UI.Color,也就是说一条MapPolylin ...
- UWP中的Direct2D
介绍 DirectX一直是Windows平台中高性能图形的代名词,自Win7开始,微软又推出了Direct2D技术,包装于Direct3D,但专注于2D图形,并且准备取代GDI这样的传统2D图形技术. ...
- UWP: 掌握编译型绑定 x:Bind
在 UWP 开发中,我们在进行数据绑定时,除了可以使用传统的绑定 Binding,也可以使用全新的 x:Bind,由于后者是在程序编译时进行初始化操作(不同于 Binding,它是在运行时创建.初始化 ...
- [UWP]实用的Shape指南
在UWP UI系统中,使用Shape是绘制2D图形最简单的方式,小到图标,大到图表都用到Shape的派生类,可以说有举足轻重的地位.幸运的是从Silverlight以来Shape基本没有什么大改动,简 ...
- [UWP]浅谈按钮设计
一时兴起想谈谈UWP按钮的设计. 按钮是UI中最重要的元素之一,可能也是用得最多的交互元素.好的按钮设计可以有效提高用户体验,构造让人眼前一亮的UI.而且按钮通常不会影响布局,小小的按钮无论怎么改也不 ...
- UWP:使用Behavior实现Button点击动态效果
废话不多说,先上效果 没有做成安卓那种圆形的原因是...人家真的不会嘛... 好了下面是正文: 首先在工程中引入Behavior的库,我们使用Nuget. 在项目->引用上点击右键,点击管理Nu ...
- [UWP]创建一个进度按钮
1. 前言 最近想要一个进度按钮. 传统上UWP上处理进度可以这样实现,首先是XAML,包括一个ProgressBar和一个按钮: <StackPanel Orientation="H ...
- win10 uwp 进度条 WaveProgressControl
昨天看到了有个大神做出好看的进度条样式,于是我就去抄袭他的代码,但是发现看不懂,于是本文主要翻译就是大神说这个控件如何做. 本文翻译 https://stackoverflow.com/a/46057 ...
随机推荐
- Appium环境搭建(python)
appium是一个开源的,适用于原生或者移动网络和混合应用程序在 iOS 和 Android 平台上的的开源自动化测试框架.在这里,详细的介绍Appium的环境搭建步骤. 1.安装Node.js在ht ...
- Android事件传递机制详解及最新源码分析——Activity篇
版权声明:本文出自汪磊的博客,转载请务必注明出处. 在前两篇我们共同探讨了事件传递机制<View篇>与<ViewGroup篇>,我们知道View触摸事件是ViewGroup传递 ...
- 初学者入门web前端 C#基础知识:数组与集合
对于初学者,想要入门web前端,要有足够的信念和坚持,不然只会越走越远,我现在就深深的体会到. 我本是一个很拒绝代码的人,以前想过UI设计,但是在这段学习时间里,发现其实只要认真,代码并不是很难 所以 ...
- mysql数据类型double和decimal区别详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt336 实数是带有小数部分的数字.然而,它们不只是为了存储小数部分,也可以使用 ...
- [ASP.NET MVC]笔记(一)模型和HTML辅助方法
1.ModelState.IsValid 检验模型有效性 2.显示模型绑定(操作方法中没有参数): UpdateModel(album):模型绑定期间出错会抛出异常 TryUpdateModel ...
- 交换机的Ethernet Channel
端口聚合也叫做以太通道(ethernet channel),主要用于交换机之间连接.由于两个交换机之间有多条冗余链路的时候,STP会将其中的几条链路关闭,只保留一条,这样可以避免二层的环 路产生.但是 ...
- 201521123020 《Java程序设计》第7周学习总结
1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 public boolean contains(Object o) { re ...
- 201521123024 《Java程序设计》第6周学习总结
1. 本周学习总结 2. 书面作业 1.clone方法 1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 用protected修饰 ...
- java课程设计--WeTalk(201521123072秦贞一)
在线群聊系统 1,团队课程设计博客链接 http://www.cnblogs.com/slickghost/p/7018105.html 个人负责模块或任务说明 负责模块:界面设计与实现 2,自己的代 ...
- 201521123096《Java程序设计》第十二周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...