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();
|
}
|
}
|
}
|