Пример #1
0
        public void Load(IVariantStream Stream)
        {
            int ver = (int)Stream.Read();

            if (ver > c_Version || ver <= 0)
            {
                throw new Exception("Wrong version!");
            }

            InitMembers();

            m_size            = (double)Stream.Read();
            m_scaleRef        = (double)Stream.Read();
            m_anchorPointType = (esriAnchorPointEnum)Stream.Read();
            m_autoTrans       = (bool)Stream.Read();
            m_elementType     = (string)Stream.Read();
            m_elementName     = (string)Stream.Read();
            m_nativeSR        = Stream.Read() as ISpatialReference;
            m_fillSymbol      = Stream.Read() as ISimpleFillSymbol;
            m_pointGeometry   = Stream.Read() as IPoint;
            m_triangle        = Stream.Read() as IPolygon;

            if (ver == 2)
            {
                m_rotation = (double)Stream.Read();
            }
        }
Пример #2
0
        public void DirectAnchor(esriAnchorPointEnum inAnchorPoint)
        {
            btn1.Enabled = true;
            btn2.Enabled = true;
            btn3.Enabled = true;
            btn4.Enabled = true;
            btn5.Enabled = true;
            btn6.Enabled = true;
            btn7.Enabled = true;
            btn8.Enabled = true;
            btn9.Enabled = true;

            switch (inAnchorPoint)
            {
            case esriAnchorPointEnum.esriBottomLeftCorner:
                btn7.Enabled = false;
                break;

            case esriAnchorPointEnum.esriBottomMidPoint:
                btn8.Enabled = false;
                break;

            case esriAnchorPointEnum.esriBottomRightCorner:
                btn9.Enabled = false;
                break;

            case esriAnchorPointEnum.esriCenterPoint:
                btn5.Enabled = false;
                break;

            case esriAnchorPointEnum.esriLeftMidPoint:
                btn4.Enabled = false;
                break;

            case esriAnchorPointEnum.esriRightMidPoint:
                btn6.Enabled = false;
                break;

            case esriAnchorPointEnum.esriTopLeftCorner:
                btn1.Enabled = false;
                break;

            case esriAnchorPointEnum.esriTopMidPoint:
                btn2.Enabled = false;
                break;

            case esriAnchorPointEnum.esriTopRightCorner:
                btn3.Enabled = false;
                break;

            default:
                btn7.Enabled = false;
                break;
            }
        }
Пример #3
0
        public void Load(IVariantStream Stream)
        {
            int num = (int)Stream.Read();

            if ((num > 2 ? true : num <= 0))
            {
                throw new Exception("Wrong version!");
            }
            this.InitMembers();
            this.m_size            = (double)Stream.Read();
            this.m_scaleRef        = (double)Stream.Read();
            this.m_anchorPointType = (esriAnchorPointEnum)Stream.Read();
            this.m_autoTrans       = (bool)Stream.Read();
            this.m_elementType     = (string)Stream.Read();
            this.m_elementName     = (string)Stream.Read();
            this.m_nativeSR        = Stream.Read() as ISpatialReference;
            this.m_fillSymbol      = Stream.Read() as ILineSymbol;
            this.m_triangle        = Stream.Read() as IPolyline;
            if (num == 2)
            {
                this.m_rotation = (double)Stream.Read();
            }
        }
Пример #4
0
        public void Assign(IClone src)
        {
            if (null == src)
            {
                throw new COMException("Invalid objact.");
            }
            if (!(src is TriangleElementClass))
            {
                throw new COMException("Bad object type.");
            }
            TriangleElementClass triangleElementClass = (TriangleElementClass)src;

            this.m_elementName     = triangleElementClass.Name;
            this.m_elementType     = triangleElementClass.Type;
            this.m_autoTrans       = triangleElementClass.AutoTransform;
            this.m_scaleRef        = triangleElementClass.ReferenceScale;
            this.m_rotation        = triangleElementClass.Angle;
            this.m_size            = triangleElementClass.Size;
            this.m_anchorPointType = triangleElementClass.AnchorPoint;
            IObjectCopy objectCopyClass = new ObjectCopy();

            if (null != triangleElementClass.CustomProperty)
            {
                if (triangleElementClass.CustomProperty is IClone)
                {
                    this.m_customProperty = ((IClone)triangleElementClass.CustomProperty).Clone();
                }
                else if (triangleElementClass.CustomProperty is IPersistStream)
                {
                    this.m_customProperty = objectCopyClass.Copy(triangleElementClass.CustomProperty);
                }
                else if (triangleElementClass.CustomProperty.GetType().IsSerializable)
                {
                    MemoryStream    memoryStream    = new MemoryStream();
                    BinaryFormatter binaryFormatter = new BinaryFormatter();
                    binaryFormatter.Serialize(memoryStream, triangleElementClass.CustomProperty);
                    memoryStream          = new MemoryStream(memoryStream.ToArray());
                    this.m_customProperty = binaryFormatter.Deserialize(memoryStream);
                }
            }
            if (null == triangleElementClass.SpatialReference)
            {
                this.m_nativeSR = null;
            }
            else
            {
                this.m_nativeSR = objectCopyClass.Copy(triangleElementClass.SpatialReference) as ISpatialReference;
            }
            if (null == triangleElementClass.FillSymbol)
            {
                this.m_fillSymbol = null;
            }
            else
            {
                this.m_fillSymbol = objectCopyClass.Copy(triangleElementClass.FillSymbol) as ISimpleFillSymbol;
            }
            if (null == triangleElementClass.Geometry)
            {
                this.m_triangle      = null;
                this.m_pointGeometry = null;
            }
            else
            {
                this.m_triangle      = objectCopyClass.Copy(triangleElementClass.Geometry) as IPolygon;
                this.m_pointGeometry = objectCopyClass.Copy(((IArea)this.m_triangle).Centroid) as IPoint;
            }
        }
Пример #5
0
        public void Assign(IClone src)
        {
            //1. make sure that src is pointing to a valid object
            if (null == src)
            {
                throw new COMException("Invalid object.");
            }

            //2. make sure that the type of src is of type 'TriangleElementClass'
            if (!(src is TriangleElementClass))
            {
                throw new COMException("Bad object type.");
            }

            //3. assign the properties of src to the current instance
            TriangleElementClass srcTriangle = (TriangleElementClass)src;

            m_elementName     = srcTriangle.Name;
            m_elementType     = srcTriangle.Type;
            m_autoTrans       = srcTriangle.AutoTransform;
            m_scaleRef        = srcTriangle.ReferenceScale;
            m_rotation        = srcTriangle.Angle;
            m_size            = srcTriangle.Size;
            m_anchorPointType = srcTriangle.AnchorPoint;

            IObjectCopy objCopy = new ObjectCopyClass();

            //take care of the custom property
            if (null != srcTriangle.CustomProperty)
            {
                if (srcTriangle.CustomProperty is IClone)
                {
                    m_customProperty = (object)((IClone)srcTriangle.CustomProperty).Clone();
                }
                else if (srcTriangle.CustomProperty is IPersistStream)
                {
                    m_customProperty = objCopy.Copy((object)srcTriangle.CustomProperty);
                }
                else if (srcTriangle.CustomProperty.GetType().IsSerializable)
                {
                    //serialize to a memory stream
                    MemoryStream    memoryStream    = new MemoryStream();
                    BinaryFormatter binaryFormatter = new BinaryFormatter();
                    binaryFormatter.Serialize(memoryStream, srcTriangle.CustomProperty);
                    byte[] bytes = memoryStream.ToArray();

                    memoryStream     = new MemoryStream(bytes);
                    m_customProperty = binaryFormatter.Deserialize(memoryStream);
                }
            }

            if (null != srcTriangle.SpatialReference)
            {
                m_nativeSR = objCopy.Copy(srcTriangle.SpatialReference) as ISpatialReference;
            }
            else
            {
                m_nativeSR = null;
            }

            if (null != srcTriangle.FillSymbol)
            {
                m_fillSymbol = objCopy.Copy(srcTriangle.FillSymbol) as ISimpleFillSymbol;
            }
            else
            {
                m_fillSymbol = null;
            }

            if (null != srcTriangle.Geometry)
            {
                m_triangle      = objCopy.Copy(srcTriangle.Geometry) as IPolygon;
                m_pointGeometry = objCopy.Copy(((IArea)m_triangle).Centroid) as IPoint;
            }
            else
            {
                m_triangle      = null;
                m_pointGeometry = null;
            }
        }
    public void Assign(IClone src)
    {

      //1. make sure that src is pointing to a valid object
      if (null == src)
      {
        throw new COMException("Invalid object.");
      }

      //2. make sure that the type of src is of type 'TriangleElementClass'
      if (!(src is TriangleElementClass))
      {
        throw new COMException("Bad object type.");
      }

      //3. assign the properties of src to the current instance
      TriangleElementClass srcTriangle = (TriangleElementClass)src;
      m_elementName = srcTriangle.Name;
      m_elementType = srcTriangle.Type;
      m_autoTrans = srcTriangle.AutoTransform;
      m_scaleRef = srcTriangle.ReferenceScale;
      m_rotation = srcTriangle.Angle;
      m_size = srcTriangle.Size;
      m_anchorPointType = srcTriangle.AnchorPoint;

      IObjectCopy objCopy = new ObjectCopyClass();

      //take care of the custom property
      if (null != srcTriangle.CustomProperty)
      {
        if (srcTriangle.CustomProperty is IClone)
          m_customProperty = (object)((IClone)srcTriangle.CustomProperty).Clone();
        else if (srcTriangle.CustomProperty is IPersistStream)
        {
          m_customProperty = objCopy.Copy((object)srcTriangle.CustomProperty);
        }
        else if (srcTriangle.CustomProperty.GetType().IsSerializable)
        {
          //serialize to a memory stream
          MemoryStream memoryStream = new MemoryStream();
          BinaryFormatter binaryFormatter = new BinaryFormatter();
          binaryFormatter.Serialize(memoryStream, srcTriangle.CustomProperty);
          byte[] bytes = memoryStream.ToArray();

          memoryStream = new MemoryStream(bytes);
          m_customProperty = binaryFormatter.Deserialize(memoryStream);
        }
      }

      if (null != srcTriangle.SpatialReference)
        m_nativeSR = objCopy.Copy(srcTriangle.SpatialReference) as ISpatialReference;
      else
        m_nativeSR = null;

      if (null != srcTriangle.FillSymbol)
      {
        m_fillSymbol = objCopy.Copy(srcTriangle.FillSymbol) as ISimpleFillSymbol;
      }
      else
        m_fillSymbol = null;

      if (null != srcTriangle.Geometry)
      {
        m_triangle = objCopy.Copy(srcTriangle.Geometry) as IPolygon;
        m_pointGeometry = objCopy.Copy(((IArea)m_triangle).Centroid) as IPoint;
      }
      else
      {
        m_triangle = null;
        m_pointGeometry = null;
      }
    }
    public void Load(IVariantStream Stream)
    {
      int ver = (int)Stream.Read();
      if (ver > c_Version || ver <= 0)
        throw new Exception("Wrong version!");

      InitMembers();

      m_size = (double)Stream.Read();
      m_scaleRef = (double)Stream.Read();
      m_anchorPointType = (esriAnchorPointEnum)Stream.Read();
      m_autoTrans = (bool)Stream.Read();
      m_elementType = (string)Stream.Read();
      m_elementName = (string)Stream.Read();
      m_nativeSR = Stream.Read() as ISpatialReference;
      m_fillSymbol = Stream.Read() as ISimpleFillSymbol;
      m_pointGeometry = Stream.Read() as IPoint;
      m_triangle = Stream.Read() as IPolygon;

      if (ver == 2)
      {
        m_rotation = (double)Stream.Read();
      }
    }