AuxiliaryTools - Axvser/MinimalisticWPF GitHub Wiki

对于WPF开发过程一些细小但常用的功能进行扩展或封装,不属于核心部件

Ⅰ String Ex

验证字符串、捕获字符串,我对这两个很常用的功能做了封装

1. 字符串验证

  var validator = new StringValidator()
      .StartWith("Hello")
      .EndWith("World")
      .VarLength(10,22)
      .Include("beautiful")
      .Exclude("bad")
      .Regex(@"^[A-Za-z\s]+$");

  string testString1 = "Hello beautiful World";
  string testString2 = "Hello bad World";

  MessageBox.Show($"{validator.validate(testString1)} | {validator.validate(testString2)}");

2. 捕获

鼠标悬停在StringCatcher上可以看到它支持的方法,此处演示了部分功能

var input = "{{1}{2}{3}{4,5,6}{{1}{2,3,4}}}测试文本 works 简单 dw";

var levels = StringCatcher.Hierarchical(input).ToList();
var chinese = StringCatcher.Chinese(input);
var words = StringCatcher.Words(input);
var numbers = StringCatcher.Numbers(input);

var level1 = levels[0]; // ["1", "2", "3", "4,5,6", "{{1}{2,3,4}}"]
var level2 = levels[1]; // ["1", "2,3,4"]
var chineseWords = chinese.ToList(); // ["测试文本", "简单"]
var wordsList = words.ToList(); // ["works", "dw"]
var numbersList = numbers.ToList(); // ["1", "2", "3", "4", "5", "6", "1", "2", "3", "4"]

Ⅱ RGB Ex

引用类型操作RGBA值,并且A值可以改用Opacity值去操作

  // 一些颜色数据
  string colorText = "Red";
  Color color = Color.FromArgb(0, 0, 0, 0);
  Brush brush = Brushes.Red;

  // 统一的解析方式
  RGB rgb1 = RGB.FromString(colorText);
  RGB rgb2 = RGB.FromColor(color);
  RGB rgb3 = RGB.FromBrush(brush);

  // 基于RGBA值进行比较
  bool result = rgb1.Equals(rgb3);
  // 基于RGBA值计算哈希
  int hash = rgb1.GetHashCode();

  // 直接修改RGBA属性值
  rgb2.A = rgb1.A;
  rgb2.R = rgb1.R;
  rgb2.G = rgb1.G;
  rgb2.B = rgb1.B;
  rgb2.Opacity = 0.5; // A 与 Opacity 被修改后,都会同时作用于对方

  // 读取Color或Brush
  color = rgb2.Color;
  brush = rgb2.Brush;

Ⅲ SVG Ex

从SVG文件中,自动捕获并拼接所有 d 值,然后自适应到指定的元素内

  var geometry = SVGExtension.FromFile(@"your svg file path"); // 从绝对路径读取SVG图,自动捕获并拼接 d 值以构成 Geometry 对象

  var grid = new Grid()
  {
    Width = 100;
    Height = 100;
  };
  var newGeometry = geometry.Adapt(grid); // 令SVG图适应元素尺寸