zoukankan      html  css  js  c++  java
  • 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 == 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

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

  • 相关阅读:
    uva 1416 (SPFA) **月赛第E题的原题**
    uva 10917 (Dijsktra+记忆化搜索) **月赛第D题的原题**
    uva 11478(二分+差分约束系统)
    uva 11374(Dijkstra) HappyNewYear!!!
    Codeforces GoodBye2013 解题报告
    Codeforces Round #222 (Div. 2) 解题报告
    uva 515(差分约束)
    uva 10273(模拟)
    uva 10985(floyd+dfs)
    uva 10594(最小费用最大流)
  • 原文地址:https://www.cnblogs.com/MzwCat/p/7624575.html
Copyright © 2011-2022 走看看