《WPF程序设计指南》读书笔记——第2章 基本画刷
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章 基本画刷的更多相关文章
- css权威指南读书笔记-第10章浮动和定位
这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...
- 《Javascript高级程序设计》读书笔记(1-3章)
第一章 JavaScript简介 1.1 JavaScript简史 略 1.2 JavaScript实现 虽然 JavaScript 和 ECMAScript 通常都被人们用来表达相同的含义,但 Ja ...
- JavaScript权威指南读书笔记【第一章】
第一章 JavaScript概述 前端三大技能: HTML: 描述网页内容 CSS: 描述网页样式 JavaScript: 描述网页行为 特点:动态.弱类型.适合面向对象和函数式编程的风格 语法源自J ...
- 《JavaScript高级程序设计》 - 读书笔记 - 第5章 引用类型
5.1 Object 类型 对象是引用类型的实例.引用类型是一种数据结构,用于将数据和功能组织在一起. 新对象是使用new操作符后跟一个构造函数来创建的.构造函数本身就是一个函数,只不过该函数是出于创 ...
- 《JavaScript高级程序设计》 - 读书笔记 - 第4章 变量、作用域和内存问题
4.1 基本类型和引用类型的值 JavaScript变量是松散类型的,它只是保存特定值的一个名字而已. ECMAScript变量包含两种数据类型的值:基本类型值和引用类型值.基本类型值指的是简单的数据 ...
- 《Linux程序设计》--读书笔记---第十三章进程间通信:管道
管道:进程可以通过它交换更有用的数据. 我们通常是把一个进程的输出通过管道连接到另一个进程的输入: 对shell命令来说,命令的连接是通过管道字符来完成的: cmd1 | cmd2 sh ...
- 《Visual C++ 程序设计》读书笔记 ----第8章 指针和引用
1.&取地址:*取内容. 2.指针变量“++”“--”,并不是指针变量的值加1或减1,而是使指针变量指向下一个或者上一个元素. 3.指针运算符*与&的优先级相同,左结合:++,--,* ...
- 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度
<Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...
- 《Linux内核设计与分析》第六周读书笔记——第三章
<Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...
随机推荐
- Android(java)学习笔记85:案例拨号程序
手机拨号程序:(只有程序代码) package cn.itcast.phone; import android.app.Activity; import android.content.Intent; ...
- ng中用$http接后台接口的异步坑
最近笔者在一个项目中用ng去接后台的接口.因为前后端都是新手,前端的不懂后台,且没有经验:后端的不懂前端,也没有经验,然后接口bug百出,文档写得乱.一个接口,后台改了三次,我也是寸步难行. 首先来看 ...
- JMS笔记(一)
1.jms概念 Java Message Service为 Java程序提供一种访问企业消息系统的方法,JMS应用由JMS生产者.JMS Provider.JMS消费者构成 1.1. 一条Messag ...
- 关于Java获取系统信息
本文部分转载自: http://www.cnblogs.com/wuhenke/archive/2011/11/19/2255400.html 我总结的相关类似博客:http://www.cnblog ...
- css3 盒模型记
css3 盒模型 css假定每个元素都会生成一个或多个矩形框,这称为元素框.各元素框中心有一个内容区.这个内容区周围有可选的内边距,边框和外边距.这些项之所以被认为是可选的,原因是它们的宽度可以设置为 ...
- MongoDB - Installing MongoDB on Linux
1. 下载最新稳定版本的安装包. [huey@huey mongodb]$ wget -c --no-check-certificate https://fossies.org/linux/misc/ ...
- 【ANT】构建文件build.xml
运行ant: ant 使用当前目录下的build.xml运行ant,指定缺省的target; ant –buildfile mybuild.xml 使用当前目录下的mybuild.xml运行ant,并 ...
- 去蓝港在线面试Unity3D的笔试题。难吗?知道答案的在评论里写出来分享
前一阵子去蓝港面试unity3d程序,在前台登记以后被领到一个吧台前面填2张个人信息表,之后有人送来笔试题,做了1个小时,感觉挺难的.之后被带到下面面试,面试的是一个年龄稍大的(可能是项目经理或者技术 ...
- Android之触屏事件
方法一: 新建"MyView"类 package onTouchEvent; import android.content.Context; import android.grap ...
- 重叠I/O之可等待的重叠I/O【系列一】
一 什么是异步I/O 同步I/O和异步I/O的关键不同就是在发出I/O请求后,线程是否会阻塞.当线程发出一个设备I/O请求的时候,线程会被挂起来,直到设备完成I/O请求为止,这称之为同步I/O.而对于 ...