1.Color结构

using System;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media; namespace LY.VaryTheBackGround
{
public class VaryTheBackGround : Window
{
SolidColorBrush brush = new SolidColorBrush(Colors.Beige);
[STAThread]
public static void Main()
{
new Application().Run(new VaryTheBackGround());
}
public VaryTheBackGround()
{
Title = "Vary the Background";
Width = 384;
Height = 384;
WindowStartupLocation = WindowStartupLocation.CenterScreen;
WindowStyle = WindowStyle.ToolWindow;
ResizeMode = ResizeMode.CanMinimize;
Background = brush;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
double width = ActualWidth -
2 * SystemParameters.ResizeFrameVerticalBorderWidth;
double height = ActualHeight -
2 * SystemParameters.ResizeFrameHorizontalBorderHeight -
SystemParameters.CaptionHeight;
Point ptMouse = e.GetPosition(this);
Point ptCenter = new Point(Width / 2, Height / 2);
Vector vectMouse = ptMouse - ptCenter;
double angle = Math.Atan2(vectMouse.Y, vectMouse.X);
Color cr = brush.Color;
cr.ScR = cr.ScG = cr.ScB = (float)angle;
brush.Color = cr;
}
}
}

  1)Color结构定义在System.Window.Media命名空间中;有4个基本属性A(alpha通道,表示不透明度)、R、G、B,值为byte类型,范围0-255;如果要表示更丰富的色彩,可以使用scRGB颜色空间,值为float类型,范围0-255;背景色的改变要通过画刷Brush类(Brush是抽象类,具体要通过某种类型的画刷类,如单色画刷SolidColorBrush类),而不能直接通过颜色Color类,这就如同要刷墙,要通过刷子,颜料才能被涂抹到墙上。

  2)结构可以用new来初始化,也可以不用new,直接给属性赋值;Color结构只有无参的构造函数,初始化后的A、R、G、B值都是0;Color结构还有一些静态方法,如Color.FromArgb、Color.FromRgb、Color.FromScRgb用于创建Color对象。

  3)Point表示坐标点,Vector为向量(一个值为长度,另一个为方向),都是结构体;两个Point相减结果是一个Vector。

2.画刷类型

  1)有单色画刷、渐变画刷(线性渐变和辐射渐变画刷)和可平铺画刷(包括三种)。

  2)Colors类、Brushes类都提供了141个静态属性,表示预设的一些颜色;还可以通过SystemColors类得到用户当前系统的配色值。需要注意的是Brushes、SystemColors类都继承自Freezable类,如“SolidColorBrush brush = Colors.Beige”使用后的brush对象会被冻结,即颜色值不能再被更改。

  3)渐变画刷通过确定起止点和颜色种类来实现渐变,如new LinearGradientBrush(Colors.Blace,Colors.White,new Point(0,0),new Point(0.75,0.75));这里使用相对于表面的单位,即窗口坐标从(0,0)到最大的(1,1),长宽都是1个单位大小。

  4)可以通过GradientStop属性可以设定渐变的分界点,GradientStops集合可以设定画刷上有多个分界点。

《WPF程序设计指南》读书笔记——第2章 基本画刷的更多相关文章

  1. css权威指南读书笔记-第10章浮动和定位

    这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...

  2. 《Javascript高级程序设计》读书笔记(1-3章)

    第一章 JavaScript简介 1.1 JavaScript简史 略 1.2 JavaScript实现 虽然 JavaScript 和 ECMAScript 通常都被人们用来表达相同的含义,但 Ja ...

  3. JavaScript权威指南读书笔记【第一章】

    第一章 JavaScript概述 前端三大技能: HTML: 描述网页内容 CSS: 描述网页样式 JavaScript: 描述网页行为 特点:动态.弱类型.适合面向对象和函数式编程的风格 语法源自J ...

  4. 《JavaScript高级程序设计》 - 读书笔记 - 第5章 引用类型

    5.1 Object 类型 对象是引用类型的实例.引用类型是一种数据结构,用于将数据和功能组织在一起. 新对象是使用new操作符后跟一个构造函数来创建的.构造函数本身就是一个函数,只不过该函数是出于创 ...

  5. 《JavaScript高级程序设计》 - 读书笔记 - 第4章 变量、作用域和内存问题

    4.1 基本类型和引用类型的值 JavaScript变量是松散类型的,它只是保存特定值的一个名字而已. ECMAScript变量包含两种数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据 ...

  6. 《Linux程序设计》--读书笔记---第十三章进程间通信:管道

    管道:进程可以通过它交换更有用的数据. 我们通常是把一个进程的输出通过管道连接到另一个进程的输入: 对shell命令来说,命令的连接是通过管道字符来完成的: cmd1    |     cmd2 sh ...

  7. 《Visual C++ 程序设计》读书笔记 ----第8章 指针和引用

    1.&取地址:*取内容. 2.指针变量“++”“--”,并不是指针变量的值加1或减1,而是使指针变量指向下一个或者上一个元素. 3.指针运算符*与&的优先级相同,左结合:++,--,* ...

  8. 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度

    <Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...

  9. 《Linux内核设计与分析》第六周读书笔记——第三章

    <Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...

随机推荐

  1. Java基础知识强化102:线程间共享数据

    一.每个线程执行的代码相同: 若每个线程执行的代码相同,共享数据就比较方便.可以使用同一个Runnable对象,这个Runnable对象中就有那个共享数据. public class MultiThr ...

  2. css笔记13:display用法

    1.代码演示: element.html如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  3. iOS银行卡合法性校验

    项目中用到了校验银行卡,就拿来贴上来了 + (BOOL)checkCardNo:(NSString*)cardNo;//判断银行卡 + (BOOL)checkCardNo:(NSString*)car ...

  4. iOS之duplicate symbols for architecture x86_64错误

    在我们写代码过程中可能会经常遇到这样一个错误: <span style="font-size:32px;color:#ff0000;">ld: 4 duplicate  ...

  5. PHP中使用kindeditor

    KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE.Firefox.Chrome. Safari.Opera等主流浏览器.KindEditor ...

  6. Linux学习之路:变量值的删除、替代和替换

    一.删除 var为变量名, ${var#v*r}:从左到右匹配将:头部是“v”,尾部是“r”的最短的部分删除 ${var##v*r}:从左到右匹配将:头部是“v”,尾部是“r”的最长的部分删除 ${v ...

  7. 安装.Net framework 3.5 sp1报错的解决方法

    错误日志,提示: [11/22/07,18:04:40] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for compo ...

  8. 【模拟】UVa 12108 - Extraordinarily Tired Students

    When a student is too tired, he can't help sleeping in class, even if his favorite teacher is right ...

  9. Sherlock and The Beast

    Sherlock Holmes suspects his archenemy, Professor Moriarty, is once again plotting something diaboli ...

  10. css hack 大全 各个浏览器的css

    各个浏览器的css hack区别属性: IE6: _zoom:1; IE6/7: *zoom:1; IE6/7/8/9 :\9 各个浏览器的css hack区别规则 IE6: *html{} IE7: ...