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 ...
随机推荐
- jquery.tmplate使用心得
jquery.tmplate使用心得 jquery.tmpl.js,是与jquey共同使用的html模板插件.该插件可通过简单的语法将数据放入到html模板中,可以很好的将数据渲染到页面上.该插件在本 ...
- 【DDD】领域驱动设计实践 —— 限界上下文识别
本文从战略层面街上DDD中关于限界上下文的相关知识,并以ECO系统为例子,介绍如何识别上下文.限界上下文(Bounded Context)定义了每个模型的应用范围,在每个Bounded Context ...
- poj 2063完全背包
题意:给出总资金和投资年份 ,n个股票 给出股票价格和其一年的利润.问如何选择能获得最大利润. 思路:股票可以重复选择,完全背包问题,完全背包也是从01背包衍生而行的,其主要区别在于中间那层循环的次序 ...
- [自制操作系统] BMP格式文件读取&图形界面系统框架/应用接口设计
本文将介绍在本人JOS中实现的简单图形界面应用程序接口,应用程序启动器,以及一些利用了图形界面的示例应用程序. 本文主要涉及以下部分: 内核/用户RW/RW调色板framebuffer共享区域 8bi ...
- window.requestAnimationFrame() ,做逐帧动画,你值得拥有
window.requestAnimationFrame() 方法告诉浏览器您希望执行动画,并请求浏览器调用指定的函数在下一次重绘之前更新动画.该方法使用一个回调函数作为参数,这个回调函数会在浏览器重 ...
- JOptionPane弹框常用实例
最近在做swing程序中遇到使用消息提示框的,JOptionPane类其中封装了很多的方法. 很方便的,于是就简单的整理了一下. 1.1 showMessageDialog 显示一个带有OK 按钮的模 ...
- RMA退货流程解决方案
RMA退货流程解决方案 1.概述 在高科技制造业中有效地对产品退货进行控制和跟踪有很大的意义.对于一个产品成本从几元到几十万元的工业,管理退货流程的能力至关重要,缺乏跟踪和控制有可能导致上百万元的损失 ...
- 安装Window下Jenkins
之前没接触过持续集成工具,之前只是了解了下自动化部署,最近一直在看自动化集成这块,发现要学的东西好多好多,可能在小公司用的不多,但如果在大公司,如果每个项目都要手动build.deploy的话那也太耗 ...
- ps中如何让图层在画布内水平居中
下图每个小logo图案距离它们的上参考线的距离均为10px,而我们如何让图层在画布内水平居中??? 如上图中三个图层的图案是用来给Html/Css中的background属性使用的,虽然可以通过鼠标拖 ...
- 探究JVM和GC
1.Java堆中各代分布: 图1:Java堆中各代分布 Young:主要是用来存放新生的对象. Old:主要存放应用程序中生命周期长的内存对象. Permanent:是指内存的永久保存区域,主要存放C ...