码迷,mamicode.com
首页 > 其他好文 > 详细

UWP brush

时间:2017-10-03 22:22:20      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:collect   参数   rsa   threading   master   sample   ==   需要   图像   

---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 == 7)
            {
                return Color.FromArgb(255,
                    Byte.Parse(src.Substring(1, 2), System.Globalization.NumberStyles.HexNumber),
                    Byte.Parse(src.Substring(3, 2), System.Globalization.NumberStyles.HexNumber),
                    Byte.Parse(src.Substring(5, 2), System.Globalization.NumberStyles.HexNumber));
            }
            //argb
            else if(src.Length==9)
            {
                return Color.FromArgb(
                    Byte.Parse(src.Substring(1, 2), System.Globalization.NumberStyles.HexNumber),
                    Byte.Parse(src.Substring(3, 2), System.Globalization.NumberStyles.HexNumber),
                    Byte.Parse(src.Substring(5, 2), System.Globalization.NumberStyles.HexNumber),
                    Byte.Parse(src.Substring(7, 2), 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

标签:collect   参数   rsa   threading   master   sample   ==   需要   图像   

原文地址:http://www.cnblogs.com/MzwCat/p/7624575.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!