| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using System.Windows;
- using System.Windows.Media;
- namespace Muchinfo.WPF.Controls.Shape
- {
- /// <summary>
- /// 部分圆角控件
- /// </summary>
- public class PartiallyRoundedRectangle : System.Windows.Shapes.Shape
- {
- public static readonly DependencyProperty RadiusXProperty;
- public static readonly DependencyProperty RadiusYProperty;
- public static readonly DependencyProperty RoundTopLeftProperty;
- public static readonly DependencyProperty RoundTopRightProperty;
- public static readonly DependencyProperty RoundBottomLeftProperty;
- public static readonly DependencyProperty RoundBottomRightProperty;
- public int RadiusX
- {
- get { return (int)GetValue(RadiusXProperty); }
- set { SetValue(RadiusXProperty, value); }
- }
- public int RadiusY
- {
- get { return (int)GetValue(RadiusYProperty); }
- set { SetValue(RadiusYProperty, value); }
- }
- public bool RoundTopLeft
- {
- get { return (bool)GetValue(RoundTopLeftProperty); }
- set { SetValue(RoundTopLeftProperty, value); }
- }
- public bool RoundTopRight
- {
- get { return (bool)GetValue(RoundTopRightProperty); }
- set { SetValue(RoundTopRightProperty, value); }
- }
- public bool RoundBottomLeft
- {
- get { return (bool)GetValue(RoundBottomLeftProperty); }
- set { SetValue(RoundBottomLeftProperty, value); }
- }
- public bool RoundBottomRight
- {
- get { return (bool)GetValue(RoundBottomRightProperty); }
- set { SetValue(RoundBottomRightProperty, value); }
- }
- static PartiallyRoundedRectangle()
- {
- RadiusXProperty = DependencyProperty.Register
- ("RadiusX", typeof(int), typeof(PartiallyRoundedRectangle));
- RadiusYProperty = DependencyProperty.Register
- ("RadiusY", typeof(int), typeof(PartiallyRoundedRectangle));
- RoundTopLeftProperty = DependencyProperty.Register
- ("RoundTopLeft", typeof(bool), typeof(PartiallyRoundedRectangle));
- RoundTopRightProperty = DependencyProperty.Register
- ("RoundTopRight", typeof(bool), typeof(PartiallyRoundedRectangle));
- RoundBottomLeftProperty = DependencyProperty.Register
- ("RoundBottomLeft", typeof(bool), typeof(PartiallyRoundedRectangle));
- RoundBottomRightProperty = DependencyProperty.Register
- ("RoundBottomRight", typeof(bool), typeof(PartiallyRoundedRectangle));
- }
- public PartiallyRoundedRectangle()
- {
- }
- protected override Geometry DefiningGeometry
- {
- get
- {
- Geometry result = new RectangleGeometry
- (new Rect(0, 0, base.Width, base.Height), RadiusX, RadiusY);
- double halfWidth = base.Width / 2;
- double halfHeight = base.Height / 2;
- if (!RoundTopLeft)
- result = new CombinedGeometry
- (GeometryCombineMode.Union, result, new RectangleGeometry
- (new Rect(0, 0, halfWidth, halfHeight)));
- if (!RoundTopRight)
- result = new CombinedGeometry
- (GeometryCombineMode.Union, result, new RectangleGeometry
- (new Rect(halfWidth, 0, halfWidth, halfHeight)));
- if (!RoundBottomLeft)
- result = new CombinedGeometry
- (GeometryCombineMode.Union, result, new RectangleGeometry
- (new Rect(0, halfHeight, halfWidth, halfHeight)));
- if (!RoundBottomRight)
- result = new CombinedGeometry
- (GeometryCombineMode.Union, result, new RectangleGeometry
- (new Rect(halfWidth, halfHeight, halfWidth, halfHeight)));
- return result;
- }
- }
- }
- }
|