Example #1
0
        public static void DrawDimension(DrawingContext drawingContext, ElementLayoutAdornerType edge, Matrix matrix, Matrix rootMatrix, Pen pen, Rect bounds, double scale)
        {
            Point point1;
            Point point2;

            switch (edge)
            {
            case ElementLayoutAdornerType.Left:
                point1 = bounds.TopLeft;
                point2 = bounds.BottomLeft;
                break;

            case ElementLayoutAdornerType.Top:
                point1 = bounds.TopLeft;
                point2 = bounds.TopRight;
                break;

            case ElementLayoutAdornerType.Right:
                point1 = bounds.TopRight;
                point2 = bounds.BottomRight;
                break;

            case ElementLayoutAdornerType.Bottom:
                point1 = bounds.BottomLeft;
                point2 = bounds.BottomRight;
                break;

            default:
                throw new NotSupportedException();
            }
            double length  = ((point2 - point1) * rootMatrix).Length;
            Point  point3  = bounds.TopLeft + 0.5 * (bounds.BottomRight - bounds.TopLeft);
            Point  point4  = point1 * matrix;
            Point  point5  = point2 * matrix;
            Point  point6  = point3 * matrix;
            Vector vector1 = point4 + 0.5 * (point5 - point4) - point6;

            vector1.Normalize();
            Vector vector2 = point5 - point4;

            vector2.Normalize();
            Vector overflowDirection = new Vector(vector2.Y, -vector2.X);

            if (overflowDirection * vector1 < 0.0)
            {
                overflowDirection = -overflowDirection;
            }
            Point  point7  = point4 - 0.5 * pen.Thickness * vector2;
            Point  point8  = point5 + 0.5 * pen.Thickness * vector2;
            Vector vector3 = scale * 7.0 * overflowDirection;
            Vector vector4 = scale * 22.0 * overflowDirection;

            drawingContext.DrawLine(pen, point7 + vector3, point7 + vector4);
            drawingContext.DrawLine(pen, point8 + vector3, point8 + vector4);
            Point  a    = point4 + scale * 17.5 * overflowDirection;
            Point  b    = point5 + scale * 17.5 * overflowDirection;
            string text = length.ToString("0.###", (IFormatProvider)CultureInfo.CurrentCulture);

            SizeAdorner.DrawLineAndText(drawingContext, a, b, overflowDirection, pen, pen.Brush, text, scale);
        }
Example #2
0
        public static void DrawDimensions(DrawingContext drawingContext, Matrix matrix, Matrix rootMatrix, Pen pen, Rect bounds, EdgeFlags edgeFlags)
        {
            if ((edgeFlags & EdgeFlags.LeftOrRight) != EdgeFlags.None)
            {
                ElementLayoutAdornerType edge = (edgeFlags & EdgeFlags.Top) != EdgeFlags.None ? ElementLayoutAdornerType.Top : ElementLayoutAdornerType.Bottom;
                SizeAdorner.DrawDimension(drawingContext, edge, matrix, rootMatrix, pen, bounds, 1.0);
            }
            if ((edgeFlags & EdgeFlags.TopOrBottom) == EdgeFlags.None)
            {
                return;
            }
            ElementLayoutAdornerType edge1 = (edgeFlags & EdgeFlags.Left) != EdgeFlags.None ? ElementLayoutAdornerType.Left : ElementLayoutAdornerType.Right;

            SizeAdorner.DrawDimension(drawingContext, edge1, matrix, rootMatrix, pen, bounds, 1.0);
        }
 public ElementLayoutLockAdorner(AdornerSet adornerSet, ElementLayoutAdornerType type)
     : base(adornerSet, type == ElementLayoutAdornerType.Left || type == ElementLayoutAdornerType.Right)
 {
     this.type = type;
 }