1234567891011121314151617181920212223242526272829303132333435 |
- //referenced from https://stackoverflow.com/a/5650367/9639378
- using System;
- using System.Globalization;
- using System.Windows;
- using System.Windows.Data;
- using System.Windows.Media;
- namespace HandyControl.Tools.Converter;
- public class BorderCircularClipConverter : IMultiValueConverter
- {
- public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
- {
- if (values.Length == 3 && values[0] is double width && values[1] is double height && values[2] is CornerRadius radius)
- {
- if (width < double.Epsilon || height < double.Epsilon)
- {
- return Geometry.Empty;
- }
- var clip = new RectangleGeometry(new Rect(0, 0, width, height), radius.TopLeft, radius.TopLeft);
- clip.Freeze();
- return clip;
- }
- return DependencyProperty.UnsetValue;
- }
- public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
- {
- throw new NotSupportedException();
- }
- }
|