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图适应元素尺寸