领胜LDS 键盘AOI检测项目
xcd
2020-06-24 d6c577e17ee7bb5331dd51d803f9b42441b0f0e5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
using System.Windows.Markup;
 
namespace Bro.Common.ImageCanvas
{
    public class ZoomAndPanViewBoxClampConverter : MarkupExtension, IMultiValueConverter
    {
        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return this;
        }
 
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            //NOTE: Cannot pass ExtentWidth or ExtentHeight as one of the values because it does not seem to update
            var zoomAndPanControl = (ZoomAndPanControl)values[3];
            if (values[0] == null || zoomAndPanControl == null) return DependencyProperty.UnsetValue;
            var size = (double)values[0];
            var offset = (double)values[1];
            var zoom = (double)values[2];
            return Math.Max((parameter?.ToString().ToLower() == "width")
                 ? Math.Min(zoomAndPanControl.ExtentWidth / zoom - offset, size)
                 : Math.Min(zoomAndPanControl.ExtentHeight / zoom - offset, size), 0);
        }
 
        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}