//--------------------------------------------------------------------------------------------------------- /// <summary> /// Конструктор по умолчанию инициализирует объект класса предустановленными значениями /// </summary> //--------------------------------------------------------------------------------------------------------- public CCadPrimitive() { mIsStroked = true; mIsFilled = false; mStroke = XCadPenManager.DefaultPen; mFill = XCadBrushManager.DefaultBrush; }
//--------------------------------------------------------------------------------------------------------- /// <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="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) { }