예제 #1
0
 public void SetObjectManager(BaseObject bo)
 {
     bo.SetObjectManager(this);
     if (Canvas.Chart != null)
     {
         FormulaArea fa = Canvas.Chart[bo.AreaName];
         if (fa == null)
         {
             fa          = Canvas.Chart[0];
             bo.AreaName = fa.Name;
         }
         bo.Area = fa;
     }
 }
예제 #2
0
 public void SetObjectManager(BaseObject bo)
 {
     bo.SetObjectManager(this);
     if (this.Canvas.BackChart != null)
     {
         FormulaArea area = this.Canvas.BackChart[bo.AreaName];
         if (area == null)
         {
             area        = this.Canvas.BackChart[0];
             bo.AreaName = area.Name;
         }
         bo.Area = area;
     }
 }
예제 #3
0
        public void Paste()
        {
            try
            {
                IDataObject ido = Clipboard.GetDataObject();
                string      s   = (string)ido.GetData(typeof(string));
                if (s != null)
                {
                    byte[]       bs = Encoding.UTF8.GetBytes(s);
                    MemoryStream ms = new MemoryStream(bs);
                    StreamReader sr = new StreamReader(ms);
                    string       t  = sr.ReadLine();
                    Type         T  = Type.GetType(t);
                    if (T != null)
                    {
                        XmlSerializer xs = new XmlSerializer(T);
                        object        o  = xs.Deserialize(sr);
                        if (o is BaseObject)
                        {
                            BaseObject bo = o as BaseObject;
                            bo.SetObjectManager(this);

                            FormulaHitInfo fhi = Canvas.Chart.GetHitInfo(CurrentMouseX, CurrentMouseY);
                            FormulaArea    fa  = fhi.Area;
                            if (fhi.HitType == FormulaHitType.htArea && fa != null)
                            {
                                PointF pf0    = bo.ToPointF(bo.ControlPoints[0]);
                                float  DeltaX = CurrentMouseX - pf0.X;
                                float  DeltaY = CurrentMouseY - pf0.Y;

                                for (int i = 0; i < bo.ControlPoints.Length; i++)
                                {
                                    PointF pf = bo.ToPointF(bo.ControlPoints[i]);
                                    bo.ControlPoints[i] = GetValueFromPos(pf.X + DeltaX, pf.Y + DeltaY, ref fa);
                                }
                                AddObject(bo);
                                Invalidate();
                            }
                        }
                    }
                }
            }
            catch
            {
            }
        }