Exemple #1
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Чтение свойств и данных графического примитива из формата атрибутов XML
 /// </summary>
 /// <param name="prefix">Префикс имени атрибута</param>
 /// <param name="xml_reader">Средство чтения данных формата XML</param>
 //---------------------------------------------------------------------------------------------------------
 public virtual void ReadPrimitivFromAttribute(String prefix, XmlReader xml_reader)
 {
     mBoundsRect = xml_reader.ReadMathRect2DfFromAttribute(prefix + "BoundsRect");
     mZIndex     = xml_reader.ReadIntegerFromAttribute(prefix + "ZIndex", mZIndex);
     mIsStroked  = xml_reader.ReadBooleanFromAttribute(prefix + "IsStroked", mIsStroked);
     mIsFilled   = xml_reader.ReadBooleanFromAttribute(prefix + "IsFilled", mIsFilled);
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Проверка на попадание ВСЕЙ ГЕОМЕТРИИ графического объекта внутрь прямоугольной области
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 /// <returns>Статус проверки</returns>
 //---------------------------------------------------------------------------------------------------------
 public override Boolean CheckInsideRect(ref Rect2Df rect)
 {
     return(rect.Contains(BoundsRect.PointTopLeft) &&
            rect.Contains(BoundsRect.PointTopRight) &&
            rect.Contains(BoundsRect.PointBottomLeft) &&
            rect.Contains(BoundsRect.PointBottomRight));
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Проверка на попадание ВСЕЙ ИЛИ ЧАСТИ ГЕОМЕТРИИ графического объекта внутрь прямоугольной области
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 /// <returns>Статус проверки</returns>
 //---------------------------------------------------------------------------------------------------------
 public override Boolean CheckInsideOrIntersectRect(ref Rect2Df rect)
 {
     return(rect.Contains(mPrimitive.BoundsRect.PointTopLeft) ||
            rect.Contains(mPrimitive.BoundsRect.PointTopRight) ||
            rect.Contains(mPrimitive.BoundsRect.PointBottomLeft) ||
            rect.Contains(mPrimitive.BoundsRect.PointBottomRight));
 }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Вычисление базовой точки отрисовки текста
            /// </summary>
            /// <param name="id">Идентификатор текста</param>
            /// <param name="h_align">Вертикальное выравнивание</param>
            /// <param name="v_align">Горизонтальное выравнивание</param>
            /// <param name="rect">Прямоугольник</param>
            /// <returns>Базовая точка</returns>
            //---------------------------------------------------------------------------------------------------------
            public Vector2Df ComputeTextIDPoint(Int32 id, TCadTextHorizontalAlignment h_align,
                                                TCadTextVerticalAlignment v_align, Rect2Df rect)
            {
                Vector2Df point = Vector2Df.Zero;

                return(point);
            }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Проверка на попадание ВСЕЙ ИЛИ ЧАСТИ ГЕОМЕТРИИ графического объекта внутрь прямоугольной области
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 /// <returns>Статус проверки</returns>
 //---------------------------------------------------------------------------------------------------------
 public virtual Boolean CheckInsideOrIntersectRect(ref Rect2Df rect)
 {
     return(rect.Contains(mBoundsRect.PointTopLeft) ||
            rect.Contains(mBoundsRect.PointTopRight) ||
            rect.Contains(mBoundsRect.PointBottomLeft) ||
            rect.Contains(mBoundsRect.PointBottomRight));
 }
Exemple #6
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Трансформирование прямоугольника
            /// </summary>
            /// <param name="rect">Исходный прямоугольник</param>
            /// <returns>Трансформированый прямоугольник </returns>
            //---------------------------------------------------------------------------------------------------------
            public Rect2Df TransformBounds(Rect2Df rect)
            {
#if USE_WINDOWS
                Rect2Df result = new Rect2Df(mWindowsTransform.TransformBounds(rect));
                return(result);
#endif
                return(Rect2Df.Default);
            }
Exemple #7
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Копирование параметров с графического примитива
 /// </summary>
 /// <param name="primitiv">Графический примитив</param>
 //---------------------------------------------------------------------------------------------------------
 public virtual void CopyParamemtrs(CCadPrimitive primitiv)
 {
     mBoundsRect = primitiv.mBoundsRect;
     mZIndex     = primitiv.mZIndex;
     mIsStroked  = primitiv.mIsStroked;
     mIsFilled   = primitiv.mIsFilled;
     mStroke     = primitiv.mStroke;
     mFill       = primitiv.mFill;
 }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Конструктор копирования
            /// </summary>
            /// <param name="source">Источник копии</param>
            //---------------------------------------------------------------------------------------------------------
            public CCadObject(CCadObject source)
            {
                mName = source.Name;
                //mGroup = source.Group;
                //mID = GenerateID();

                mIsCanvas   = false;
                mIsPrinting = source.IsPrinting;
                mZIndex     = source.ZIndex;
                mBoundsRect = source.mBoundsRect;
            }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Рисование прямоугольника ручки
 /// </summary>
 /// <param name="rect">Прямоугольник ручки</param>
 /// <param name="is_selected">Статус выбора фигуры</param>
 //---------------------------------------------------------------------------------------------------------
 public void DrawHandleRect(ref Rect2Df rect, Boolean is_selected)
 {
     if (is_selected)
     {
         //mDrawingDevice.FillRectangle(XCadBrushManager.Red.DrawingBrush, rect);
     }
     else
     {
         mCurrentPen.Width = 2 * mCanvasViewer.ZoomInverse;
         //mDrawingDevice.DrawRectangle(mCurrentPen, rect);
     }
 }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Рисование эллипса
            /// </summary>
            /// <param name="rect">Прямоугольник</param>
            /// <param name="brush">Кисть для отрисовки</param>
            /// <param name="thickness">Толщина линии</param>
            //---------------------------------------------------------------------------------------------------------
            public void DrawEllipse(ref Rect2Df rect, CCadBrush brush, Single thickness = 1.0f)
            {
                Brush  old_brush     = mCurrentPen.Brush;
                Single old_thickness = mCurrentPen.Width;

                mCurrentPen.Brush = brush.DrawingBrush;
                mCurrentPen.Width = thickness;

                //mDrawingDevice.DrawEllipse(mCurrentPen, rect);

                mCurrentPen.Brush = old_brush;
                mCurrentPen.Width = old_thickness;
            }
Exemple #11
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Обновление данных дуги
            /// </summary>
            //---------------------------------------------------------------------------------------------------------
            public override void Update()
            {
                using (StreamGeometryContext sgc = mGeometryArc.Open())
                {
                    sgc.BeginFigure(mStartPoint, mIsFilled, mIsClosed);

                    sgc.ArcTo(mEndPoint, new Size(mRadiusX, mRadiusY), mRotationAngle, mIsLargeArc,
                              mIsClockwiseDirection ? SweepDirection.Clockwise : SweepDirection.Counterclockwise, mIsStroked, true);

                    sgc.Close();
                }

                mBoundsRect = new Rect2Df(mGeometryArc.Bounds);
            }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Рисование дуги
            /// </summary>
            //---------------------------------------------------------------------------------------------------------
            public override void Draw()
            {
                if (!mIsVisibleElement)
                {
                    return;
                }

                mPrimitive.Draw();

                if (mIsSelect)
                {
                    for (Int32 i = 0; i < mHandleRects.Count; i++)
                    {
                        XCadManager.Canvas.DrawHandleRect(mHandleRects[i], mHandleIndex == i);
                    }

                    Rect2Df rect = mPrimitive.BoundsRect;
                    XCadManager.Canvas.DrawRectangle(ref rect);
                }
            }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Конструктор инициализирует объект класса указанными параметрами
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 //---------------------------------------------------------------------------------------------------------
 public CCadDirect2DPrimitiveRect(Rect2Df rect)
 {
     mBoundsRect = rect;
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Создание прямоугольника с указанными параметрами
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 /// <returns>Геометрический примитив прямоугольника</returns>
 //---------------------------------------------------------------------------------------------------------
 public CCadPrimitiveRect CreateRect(Rect2Df rect)
 {
     return(new CCadDrawingPrimitiveRect(rect));
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Конструктор инициализирует объект класса указанными параметрами
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 //---------------------------------------------------------------------------------------------------------
 public CCadWindowsPrimitiveRect(Rect2Df rect)
 {
     mBoundsRect = rect;
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Вычисление ограничивающего прямоугольника графического примитива
 /// </summary>
 /// <param name="dest_bounds_rect">Прямоугольник</param>
 //---------------------------------------------------------------------------------------------------------
 public override void ComputeBounds(ref Rect2Df dest_bounds_rect)
 {
     dest_bounds_rect = mBoundsRect;
 }
Exemple #17
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Преобразование прямоугольника WPF прямоугольник RawRectangle
 /// </summary>
 /// <param name="rect">Прямоугольника WPF</param>
 /// <returns>Прямоугольник RawRectangle</returns>
 //---------------------------------------------------------------------------------------------------------
 public static RawRectangleF ToRawRectF(this Rect2Df rect)
 {
     return(new RawRectangleF(rect.X, rect.Y, rect.Right, rect.Bottom));
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Рисование эллипса
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 /// <param name="stroke">Перо для отображения</param>
 //---------------------------------------------------------------------------------------------------------
 public void DrawEllipse(ref Rect2Df rect, CCadPen stroke)
 {
     //mDrawingDevice.DrawEllipse(stroke.DrawingPen, rect);
 }
Exemple #19
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Конструктор инициализирует объект класса указанными параметрами
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 //---------------------------------------------------------------------------------------------------------
 public CCadDrawingPrimitiveRect(Rect2Df rect)
 {
     mBoundsRect = rect;
 }
Exemple #20
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Обновление данных геометрии
            /// </summary>
            //---------------------------------------------------------------------------------------------------------
            public override void Update()
            {
                using (StreamGeometryContext sgc = mGeometry.Open())
                {
                    CCadSegment current_figure = mSegments[0];

                    sgc.BeginFigure(current_figure.BasePoint, current_figure.IsFilled, current_figure.IsClosed);

                    Int32 current_new_figure = 0;

                    for (Int32 i = 0; i < mSegments.Count; i++)
                    {
                        CCadSegment current_segment = mSegments[i];

                        // Если новая фигура
                        if (current_segment.IsNewFigure && current_new_figure != i)
                        {
                            // Закрывает текущую фигуру

                            // Открываем новую фигуру
                            sgc.BeginFigure(current_segment.BasePoint, current_segment.IsFilled, current_segment.IsClosed);

                            current_figure     = current_segment;
                            current_new_figure = i;
                        }

                        switch (current_segment.SegmentType)
                        {
                        case TCadSegmentType.Points:
                        {
                            CCadSegmentPoints points = current_segment as CCadSegmentPoints;
                            sgc.PolyLineTo(points.Points.ConvertToWindowsPoints(), mIsStroked, true);
                        }
                        break;

                        case TCadSegmentType.Line:
                        {
                            CCadSegmentLine line = current_segment as CCadSegmentLine;
                            sgc.LineTo(line.EndPoint, mIsStroked, true);
                        }
                        break;

                        case TCadSegmentType.Arc:
                        {
                            CCadSegmentArc arc = current_segment as CCadSegmentArc;
                            sgc.ArcTo(arc.EndPoint, new Size(arc.RadiusX, arc.RadiusY),
                                      arc.RotationAngle, arc.IsLargeArc, arc.IsClockwiseDirection ? SweepDirection.Clockwise :
                                      SweepDirection.Counterclockwise, mIsStroked, true);
                        }
                        break;

                        case TCadSegmentType.Bezier:
                            break;

                        default:
                            break;
                        }
                    }

                    // Закрывает текущую фигуру
                    sgc.Close();
                }

                mBoundsRect = new Rect2Df(mGeometry.Bounds);
            }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Рисование прямоугольника с параметрами отображения по умолчанию
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 //---------------------------------------------------------------------------------------------------------
 public void DrawRectangle(ref Rect2Df rect)
 {
     //mDrawingDevice.DrawRectangle(mCurrentPen, rect);
 }
Exemple #22
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Вычисление ограничивающего прямоугольника графического примитива
 /// </summary>
 /// <param name="dest_bounds_rect">Прямоугольник</param>
 //---------------------------------------------------------------------------------------------------------
 public virtual void ComputeBounds(ref Rect2Df dest_bounds_rect)
 {
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Проверка на попадание ВСЕЙ ГЕОМЕТРИИ графического объекта внутрь прямоугольной области
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 /// <returns>Статус проверки</returns>
 //---------------------------------------------------------------------------------------------------------
 public override Boolean CheckInsideRect(ref Rect2Df rect)
 {
     return(rect.Contains(ref mStartPoint) && rect.Contains(ref mEndPoint));
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Рисование эллипса с параметрами отображения по умолчанию
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 //---------------------------------------------------------------------------------------------------------
 public void DrawEllipse(ref Rect2Df rect)
 {
     //mDrawingDevice.DrawEllipse(mCurrentPen, rect);
 }
Exemple #25
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Вычисление ограничивающего прямоугольника графического примитива
 /// </summary>
 /// <param name="dest_bounds_rect">Прямоугольник</param>
 //---------------------------------------------------------------------------------------------------------
 public override void ComputeBounds(ref Rect2Df dest_bounds_rect)
 {
     dest_bounds_rect = new Rect2Df(mGeometry.Bounds);
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Проверка на попадание ВСЕЙ ИЛИ ЧАСТИ ГЕОМЕТРИИ графического объекта внутрь прямоугольной области
 /// </summary>
 /// <param name="rect">Прямоугольник</param>
 /// <returns>Статус проверки</returns>
 //---------------------------------------------------------------------------------------------------------
 public override Boolean CheckInsideOrIntersectRect(ref Rect2Df rect)
 {
     return(rect.Contains(ref mStartPoint) || rect.Contains(Location) || rect.Contains(ref mEndPoint));
 }
Exemple #27
0
        public static List <ICollisionable> QueryArea(Rect2Df area)
        {
            List <ICollisionable> results = new List <ICollisionable>();

            return(results);
        }
Exemple #28
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Перевод прямоугольника в аппаратно-независимых единицах в миллиметры
 /// </summary>
 /// <param name="device_unit">Прямоугольник в аппаратно-независимых единицах</param>
 /// <returns>Прямоугольник в миллиметрах</returns>
 //---------------------------------------------------------------------------------------------------------
 public static Rect2Df ToMilliliters(ref Rect2Df device_unit)
 {
     return(new Rect2Df(device_unit.X * UnitToMM, device_unit.Y * UnitToMM,
                        device_unit.Width * UnitToMM, device_unit.Height * UnitToMM));
 }
Exemple #29
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Перевод прямоугольника в миллиметрах в аппаратно-независимые единицы
 /// </summary>
 /// <param name="millimeter">Прямоугольник в миллиметрах</param>
 /// <returns>Прямоугольник в аппаратно-независимых единицах</returns>
 //---------------------------------------------------------------------------------------------------------
 public static Rect2Df ToDeviceUnits(ref Rect2Df millimeter)
 {
     return(new Rect2Df(millimeter.X * MMToUnit, millimeter.Y * MMToUnit,
                        millimeter.Width * MMToUnit, millimeter.Height * MMToUnit));
 }
Exemple #30
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Преобразование прямоугольника WPF прямоугольник RawRectangle
 /// </summary>
 /// <param name="rect">Прямоугольника WPF</param>
 /// <returns>Прямоугольник RawRectangle</returns>
 //---------------------------------------------------------------------------------------------------------
 public static RawRectangle ToRawRect(this Rect2Df rect)
 {
     return(new RawRectangle((Int32)rect.X, (Int32)rect.Y, (Int32)rect.Right, (Int32)rect.Bottom));
 }