using System; using System.Globalization; using System.Windows.Data; namespace HMI.Core { public class WidthSizeConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { /// "{size},{基准值},{最小值},{最大值}" if (parameter == null) return 15; string[] ps = parameter.ToString().Split(','); double size = double.Parse(ps[0]); double baseSize = double.Parse(ps[1]); double min = -1, max = -1; if (ps.Length >= 3) { min = double.Parse(ps[2]); } if (ps.Length >= 4) { max = double.Parse(ps[3]); } if (value is double width) { double res = CountFontSize(size, width, baseSize); res = min > 0 && res < min ? min : res; res = max > 0 && res > max ? max : res; return res; } return 15; } public static double CountFontSize(double size, double limit, double baseSize) { return size * limit / baseSize; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } public class HeightSizeConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (parameter == null) return 15; string[] ps = parameter.ToString().Split(','); int size = int.Parse(ps[0]); int baseSize = int.Parse(ps[1]); double min = -1, max = -1; if (ps.Length >= 3) { min = double.Parse(ps[2]); } if (ps.Length >= 4) { max = double.Parse(ps[3]); } if (value is double height) { double res = CountFontSize(size, height, baseSize); res = min > 0 && res < min ? min : res; res = max > 0 && res > max ? max : res; return res; } return 15; } public static double CountFontSize(double size, double limit, double baseSize) { return size * limit / baseSize; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } }