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集合可以设定画刷上有多个分界点。

最新文章

  1. 3.1 哈尔空间 V0
  2. Retina屏实现1px边框
  3. Robot Framework入门学习1 安装部署详解
  4. QT 初阶 第二章 创建对话框(查找对话框实例)
  5. MVC_Ajax请求
  6. springboot注解
  7. iOS开源库--最全的整理
  8. 编写带对话框界面的OCX
  9. 利用jsonp调用外部ip地址池
  10. js-基本语法2
  11. MIME类型解析
  12. Linux eclipse 编译C++
  13. Centos6.8下编译安装LAMP的操作记录梳理
  14. java用字符io流复制文件
  15. MySQL架构之keepalived+haproxy+mysql 实现MHA中slave集群负载均衡的高可用(原创)
  16. JDK安装(linux系统)
  17. 2014蓝桥杯B组初赛试题《切面条》
  18. Hystrix熔断器(六)
  19. 详细说明svn分支与合并,以及实例
  20. [转载] 最简单的基于FFmpeg的AVDevice例子(读取摄像头)

热门文章

  1. height、clientHeight、scrollHeight、offsetHeight区别
  2. maven管理多模块系统
  3. 【Nginx 1】Nginx 的下载和安装
  4. 在Flex4中使用RemoteObjectAMF0来连接fluorine网关 转
  5. [设计模式]<<设计模式之禅>>抽象工厂模式
  6. Jersey(1.19.1) - Client API, Uniform Interface Constraint
  7. Jedis - hello world
  8. android NDK 开发步骤
  9. Linux命令(5):cp命令
  10. 那万恶的ssh真是麻烦