Ejemplo n.º 1
0
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Конструктор по умолчанию инициализирует объект класса предустановленными значениями
 /// </summary>
 //---------------------------------------------------------------------------------------------------------
 public CCadPrimitive()
 {
     mIsStroked = true;
     mIsFilled  = false;
     mStroke    = XCadPenManager.DefaultPen;
     mFill      = XCadBrushManager.DefaultBrush;
 }
Ejemplo n.º 2
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;
 }
Ejemplo n.º 3
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Удаление кисти из проекта
            /// </summary>
            /// <param name="sender">Источник события</param>
            /// <param name="args">Аргументы события</param>
            //---------------------------------------------------------------------------------------------------------
            private void OnBrushManagerRemove(Object sender, RoutedEventArgs args)
            {
                CCadBrush brush = mCollectionViewBrushes.CurrentItem as CCadBrush;

                if (brush != null)
                {
                    XCadBrushManager.Remove(brush);
                }
            }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Удаления кисти
            /// </summary>
            /// <param name="brush">Кисть</param>
            //---------------------------------------------------------------------------------------------------------
            public static void Remove(CCadBrush brush)
            {
                // 1) Если объект константный - выходим
                if (brush.IsConst)
                {
                    return;
                }

                // 2) Проходим все проекты и перекидываем используемую кисть на кисть по умолчанию
                //for (Int32 ip = 0; ip < XManager.Projects.Count; ip++)
                //{
                //	ICadProject project = XManager.Projects[ip] as ICadProject;
                //	if (project != null)
                //	{
                //		//for (Int32 id = 0; id < project.Documents.Count; id++)
                //		//{
                //		//	ICadDraft draft = project.Documents[id] as ICadDraft;
                //		//	if (draft != null)
                //		//	{
                //		//		for (Int32 ie = 0; ie < draft.Elements.Count; ie++)
                //		//		{
                //		//			ICadFillSupport element = draft.Elements[ie] as ICadFillSupport;
                //		//			if (element != null && element.FillBrush == brush)
                //		//			{
                //		//				element.SetFillBrush(DefaultBrush);
                //		//			}
                //		//		}
                //		//	}
                //		//}
                //	}
                //}

                // 2) Проходим все документы и перекидываем используемую кисть на кисть по умолчанию
                //for (Int32 id = 0; id < XManager.Documents.Count; id++)
                //{
                //	ICadDraft draft = XManager.Documents[id] as ICadDraft;
                //	if (draft != null)
                //	{
                //		//for (Int32 ie = 0; ie < draft.Elements.Count; ie++)
                //		//{
                //		//	ICadFillSupport element = draft.Elements[ie] as ICadFillSupport;
                //		//	if (element != null && element.FillBrush == brush)
                //		//	{
                //		//		element.SetFillBrush(DefaultBrush);
                //		//	}
                //		//}
                //	}
                //}

                // 3) Удаляем кисть
                mBrushes.Remove(brush);
            }
            //---------------------------------------------------------------------------------------------------------
            /// <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;
            }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Рисование линии
            /// </summary>
            /// <param name="start_point">Начальная точка</param>
            /// <param name="end_point">Конечная точка</param>
            /// <param name="brush">Кисть для отрисовки</param>
            /// <param name="thickness">Толщина линии</param>
            //---------------------------------------------------------------------------------------------------------
            public void DrawLine(ref Vector2Df start_point, ref Vector2Df end_point, CCadBrush brush, Single thickness = 1.0f)
            {
                //Brush old_brush = mCurrentPen.Brush;
                //Single old_thickness = mCurrentPen.Width;

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

                //mDrawingDevice.DrawLine(mCurrentPen, start_point, end_point);

                //mCurrentPen.Brush = old_brush;
                //mCurrentPen.Width = old_thickness;
            }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Чтение свойств и данных графического примитива из формата атрибутов XML
 /// </summary>
 /// <param name="prefix">Префикс имени атрибута</param>
 /// <param name="xml_reader">Средство чтения данных формата XML</param>
 //---------------------------------------------------------------------------------------------------------
 public override 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);
     mText                = xml_reader.ReadStringFromAttribute(prefix + "Text", mText);
     mBrush               = XCadBrushManager.GetFromColor(xml_reader.ReadCadColorFromAttribute(prefix + "Color"));
     mFontSize            = xml_reader.ReadSingleFromAttribute(prefix + "FontSize", mFontSize);
     mFont                = XCadFontManager.GetFromId(xml_reader.ReadLongFromAttribute(prefix + "FontID", mFont.ID));
     mHorizontalAlignment = xml_reader.ReadEnumFromAttribute(prefix + "HorizontalAlignment", mHorizontalAlignment);
     mVerticalAlignment   = xml_reader.ReadEnumFromAttribute(prefix + "VerticalAlignment", mVerticalAlignment);
     mTrimming            = xml_reader.ReadEnumFromAttribute(prefix + "Trimming", mTrimming);
 }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Поиск кисти по идентификатору
            /// </summary>
            /// <param name="id">Идентификатор кисти</param>
            /// <returns>Найденная кисть или кисть по умолчанию</returns>
            //---------------------------------------------------------------------------------------------------------
            public static CCadBrush GetFromId(Int64 id)
            {
                CCadBrush brush = DefaultBrush;

                for (Int32 i = 0; i < mBrushes.Count; i++)
                {
                    if (mBrushes[i].ID == id)
                    {
                        return(mBrushes[i]);
                    }
                }

                return(brush);
            }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Поиск кисти по имени
            /// </summary>
            /// <param name="name">Имя кисти</param>
            /// <returns>Найденная кисть или кисть по умолчанию</returns>
            //---------------------------------------------------------------------------------------------------------
            public static CCadBrush GetFromName(String name)
            {
                CCadBrush brush = DefaultBrush;

                for (Int32 i = 0; i < mBrushes.Count; i++)
                {
                    if (mBrushes[i].Name == name)
                    {
                        return(mBrushes[i]);
                    }
                }

                return(brush);
            }
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Поиск кисти по цвету
            /// </summary>
            /// <param name="color">Цвет кисти</param>
            /// <returns>Найденная кисть или кисть по умолчанию</returns>
            //---------------------------------------------------------------------------------------------------------
            public static CCadBrush GetFromColor(TCadColor color)
            {
                CCadBrush brush = DefaultBrush;

                for (Int32 i = 0; i < mBrushes.Count; i++)
                {
                    if (mBrushes[i].BrushFill == TCadBrushFillType.Solid)
                    {
                        CCadBrushSolid solid_brush = mBrushes[i] as CCadBrushSolid;
                        if (solid_brush.Color.Equals(color))
                        {
                            return(solid_brush);
                        }
                    }
                }

                CCadBrushSolid new_solid_brush = new CCadBrushSolid(color);

                mBrushes.Add(new_solid_brush);

                return(new_solid_brush);
            }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Конструктор по умолчанию инициализирует объект класса предустановленными значениями
 /// </summary>
 //---------------------------------------------------------------------------------------------------------
 public CCadPrimitiveText()
 {
     mBrush = XCadBrushManager.DarkGray;
     mFont  = XCadFontManager.DefaultFont;
 }
 //---------------------------------------------------------------------------------------------------------
 /// <summary>
 /// Обновление текста по ресурсу внутреннего идентификатора
 /// </summary>
 /// <param name="id">Идентификатор текста</param>
 /// <param name="brush">Кисть для рисования текста</param>
 //---------------------------------------------------------------------------------------------------------
 public void UpdateTextID(Int32 id, CCadBrush brush)
 {
 }