Пример #1
0
 public void DrawEllipseROI(double row = 100, double col = 100, double phi = 10, double radius1 = 100, double radius2 = 100)
 {
     if (bDrawing)
     {
         MessageHelper.ShowWarning("显示界面正在进行ROI操作!");
         return;
     }
     if (Image == null)
     {
         return;
     }
     if (ellipse == null)
     {
         ellipse = new DrawEllipse(Window, Image, row, col, phi, radius1, radius2);
     }
     else
     {
         ellipse.Row     = row;
         ellipse.Col     = col;
         ellipse.Angle   = phi;
         ellipse.Radius1 = radius1;
         ellipse.Radius2 = radius2;
     }
     bDrawing     = true;
     DrawingShape = ROIShape.Ellipse;
     BindingEllipseROIEvent();
     ellipse.CreateROI();
 }
Пример #2
0
    void Start()
    {
        Instantiate(arrow, Vector3.zero, Quaternion.Euler(new Vector3(0, 0, longitudeOfTheAscendingNode)));
        Instantiate(arrow, Vector3.zero, Quaternion.Euler(new Vector3(0, 0, longitudeOfTheAscendingNode + argumentOfPeriapsis)));

        semiminorAxis = semimajorAxis * Mathf.Sqrt(1 - Mathf.Pow(eccentricity, 2));
        focalParam    = Mathf.Pow(semiminorAxis, 2) / semimajorAxis;

        //positions with angle 0
        float      xPosition         = -(semimajorAxis * eccentricity);
        float      yPosition         = 0;
        float      rotation          = longitudeOfTheAscendingNode + argumentOfPeriapsis;
        GameObject orbitLineInstance = Instantiate(orbitLine,
                                                   new Vector3(xPosition * Mathf.Cos(rotation * Mathf.Deg2Rad) - yPosition * Mathf.Sin(rotation * Mathf.Deg2Rad),
                                                               yPosition * Mathf.Cos(rotation * Mathf.Deg2Rad) + xPosition * Mathf.Sin(rotation * Mathf.Deg2Rad),
                                                               0),
                                                   Quaternion.identity);

        DrawEllipse drawEllipse = orbitLineInstance.GetComponent <DrawEllipse>();

        drawEllipse.xradius = semimajorAxis;
        drawEllipse.yradius = semiminorAxis;
        orbitLineInstance.transform.rotation = Quaternion.Euler(new Vector3(0, 0, longitudeOfTheAscendingNode + argumentOfPeriapsis));
        drawEllipse.Draw();
        linearSpeed = Mathf.PI * semimajorAxis * semiminorAxis / 1000;
        angle       = 0;
    }
Пример #3
0
        public IDrawObj CreateDrawObj(DrawType type)
        {
            //todo add control
            IDrawObj obj;

            switch (type)
            {
            case DrawType.Group:
                obj = new DrawGroup();
                break;

            case DrawType.Combine:
                obj = new DrawCombine();
                break;

            case DrawType.Rect:
                obj = new DrawRect();
                break;

            case DrawType.Ellipse:
                obj = new DrawEllipse();
                break;

            case DrawType.Text:
                obj = new DrawText();
                break;

            case DrawType.StraightLine:
                obj = new DrawStraightLine();
                break;

            case DrawType.FoldLine:
                obj = new DrawFoldLine();
                break;

            case DrawType.Bezier:
                obj = new DrawBezier();
                break;

            case DrawType.Polygon:
                obj = new DrawPolygon();
                break;

            case DrawType.ClosedBezier:
                obj = new DrawClosedBezier();
                break;

            default:
                return(null);
            }

            return(obj);
        }
Пример #4
0
    void Start()
    {
        semiMinorAxis = semiMayorAxis * Mathf.Sqrt(1 - Mathf.Pow(excentricity, 2));
        focalParam    = Mathf.Pow(semiMinorAxis, 2) / semiMayorAxis;

        GameObject  orbitLineInstance = Instantiate(orbitLine, Vector3.zero, Quaternion.identity);
        DrawEllipse drawEllipse       = orbitLineInstance.GetComponent <DrawEllipse>();

        drawEllipse.xradius = semiMayorAxis;
        drawEllipse.yradius = semiMinorAxis;
        orbitLineInstance.transform.rotation = Quaternion.Euler(new Vector3(0, 0, newAngle));
        drawEllipse.Draw();
        angle = 0;
    }
 public void LoadData(DrawEllipse obj, Form frm)
 {
     objEllips              = obj;
     txtName.Text           = objEllips.Name;
     txtX1.Text             = objEllips.Rectangle.X.ToString();
     txtY1.Text             = objEllips.Rectangle.Y.ToString();
     txtX2.Text             = objEllips.Rectangle.Width.ToString();
     txtY2.Text             = objEllips.Rectangle.Height.ToString();
     txtWidth.Text          = objEllips.LineWidth.ToString();
     lblColor.BackColor     = objEllips.Color;
     chkFill.Checked        = objEllips.Fill;
     lblFillColor.BackColor = objEllips.FillColor;
     txtAngle.Text          = objEllips.RotateAngle.ToString("F6");
     frmOwner = frm;
 }
Пример #6
0
        /// <summary>
        /// Left nous button is pressed
        /// </summary>
        /// <param name="drawArea"></param>
        /// <param name="e"></param>
        public override void OnMouseDown(DrawArea drawArea, MouseEventArgs e)
        {
            //delete last goal draw object
            if (goalDrawID != -1)
            {
                int al = drawArea.TheLayers.ActiveLayerIndex;

                drawArea.TheLayers[al].Graphics.DeleteObjectByID(goalDrawID);
            }

            Point p = drawArea.BackTrackMouse(new Point(e.X, e.Y));

            if (drawArea.CurrentPen == null)
            {
                DrawEllipse drawGoal = new DrawEllipse(p.X, p.Y, 4, 4, drawArea.LineColor, drawArea.FillColor, drawArea.DrawFilled, drawArea.LineWidth);
                AddNewObject(drawArea, drawGoal);
                goalDrawID = drawGoal.ID;
            }
            else
            {
                DrawEllipse drawGoal = new DrawEllipse(p.X, p.Y, 4, 4, drawArea.PenType, drawArea.FillColor, drawArea.DrawFilled);
                AddNewObject(drawArea, drawGoal);
                goalDrawID = drawGoal.ID;
            }

            PointF mapPoint = drawArea.World2Map(p);

            gm.PoseStamped pose = new Messages.geometry_msgs.PoseStamped();
            pose.header          = new m.Header();
            pose.header.frame_id = "map";
            pose.header.stamp    = Ros_CSharp.ROS.GetTime();
            pose.pose            = new gm.Pose();
            pose.pose.position   = new gm.Point();
            pose.pose.position.x = mapPoint.X;
            pose.pose.position.y = mapPoint.Y;

            //emQuaternion quaternion= tf.net.emQuaternion.FromRPY(new emVector3(0,90, 0));
            //pose.pose.orientation = quaternion.ToMsg();
            pose.pose.orientation   = new gm.Quaternion();
            pose.pose.orientation.x = 0;
            pose.pose.orientation.y = 0;
            pose.pose.orientation.z = 0;
            pose.pose.orientation.w = 1;
            goalPub.publish(pose);
        }
Пример #7
0
        public static DrawObject GetObjectFromString(string s, Point lastEndPoint)
        {
            var informations = new Dictionary <ObjectInformation, string>();

            //einzelne Daten werden in einem StringArray abgespeichert
            string[] data = s.Split('/');

            //einzelne Informationen werden abgespeichert
            foreach (var informatin in data)
            {
                //teilt information in Art der Information und den Wert auf
                string[] splitInformation = informatin.Split(':');

                try
                {
                    informations.Add((ObjectInformation)Enum.Parse(typeof(ObjectInformation), splitInformation[0]), splitInformation[1]);
                }
                catch
                { }
            }

            //ObjektTyp wird abgespeichert
            ObjectTypes objectType = (ObjectTypes)Enum.Parse(typeof(ObjectTypes), informations.GetObjectInformation(ObjectInformation.objectType));

            //-----Informationen werden abgespeichert

            //Endpunkt
            var endPoint = new Point(
                MainWindow.CentimeterTopixel(Double.Parse(informations.GetObjectInformation(ObjectInformation.endX))),
                MainWindow.CentimeterTopixel(Double.Parse(informations.GetObjectInformation(ObjectInformation.endY))));

            DrawObject newObject = null;

            switch (objectType)
            {
            case ObjectTypes.Line:
            {
                var lineMode = (DrawLine.LineMode)Enum.Parse(typeof(DrawLine.LineMode), informations.GetObjectInformation(ObjectInformation.lineMode));

                //ende des letzen Objekts ist der Start der Linie
                newObject = new DrawLine(lastEndPoint, endPoint, lineMode);
            }
            break;

            case ObjectTypes.Ellipse:
            {
                //Breite
                var width = double.Parse(informations.GetObjectInformation(ObjectInformation.width));

                //Höhe
                var height = double.Parse(informations.GetObjectInformation(ObjectInformation.height));

                newObject = new DrawEllipse(endPoint, width, height);
            }
            break;

            case ObjectTypes.Arc:
            {
                var radius = MainWindow.CentimeterTopixel(Double.Parse(informations.GetObjectInformation(ObjectInformation.radius)));

                var circleSizeAngle = double.Parse(informations.GetObjectInformation(ObjectInformation.circleSizeAngle));

                var startAngle = double.Parse(informations.GetObjectInformation(ObjectInformation.startAngle));

                var isInverted = Boolean.Parse(informations.GetObjectInformation(ObjectInformation.inverted));

                newObject = new DrawCircle(lastEndPoint, radius, circleSizeAngle, startAngle, isInverted);
            }
            break;

            default:
            {
                newObject = null;
            }
            break;
            }

            return(newObject);
        }
Пример #8
0
        public void LoadDisplay(TabGraphicPageControl tabdisplaypagecontrol)
        {
            //GraphicsList graphicslist = new Draw.GraphicsList();
            Pages = new PageList(tabdisplaypagecontrol);


            foreach (tblBitmap tblbitmap in m_tblBitmapCollection)
            {
                DrawImage obj = new DrawImage(Pages);
                obj.Load(tblbitmap);
                Pages.GraphicPagesList[Pages.ActivePageNo].Add(obj);
            }
            foreach (tblADText tbladtext in m_tblADTextCollection)
            {
                DrawText obj = new DrawText(Pages);
                obj.Load(tbladtext);
                Pages.GraphicPagesList[Pages.ActivePageNo].Add(obj);
            }
            foreach (tblLine tblline in m_tblLineCollection)
            {
                DrawLine obj = new DrawLine(Pages);
                obj.Load(tblline);
                Pages.GraphicPagesList[Pages.ActivePageNo].Add(obj);
            }
            foreach (tblRect tblrect in m_tblRectCollection)
            {
                switch ((STATIC_OBJ_TYPE)tblrect.Type)
                {
                case STATIC_OBJ_TYPE.ID_ELLIPS:
                    DrawEllipse drawellipse = new DrawEllipse(Pages);
                    drawellipse.Load(tblrect);
                    Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawellipse);
                    break;

                case STATIC_OBJ_TYPE.ID_ROUNDRECT:
                case STATIC_OBJ_TYPE.ID_RECT:
                    DrawRectangle drawrectangle = new DrawRectangle(Pages);
                    drawrectangle.Load(tblrect);
                    Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawrectangle);
                    break;
                }
            }
            foreach (tblPolyline tblpolyline in m_tblPolylineCollection)
            {
                DrawPolyLine drawpolyline = new DrawPolyLine(Pages);
                drawpolyline.Load(tblpolyline);
                Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawpolyline);
            }
            foreach (tblPolygon tblpolygon in m_tblPolygonCollection)
            {
                DrawPolygon drawpolygon = new DrawPolygon(Pages);
                drawpolygon.Load(tblpolygon);
                Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawpolygon);
            }
            foreach (tblCurve tblcurve in m_tblCurveCollection)
            {
                DrawCurve drawcurve = new DrawCurve(Pages);
                drawcurve.Load(tblcurve);
                Pages.GraphicPagesList[Pages.ActivePageNo].Add(drawcurve);
            }
            Pages.GraphicPagesList[Pages.ActivePageNo].SortoIndex();
        }
Пример #9
0
        public void GetImageProcess()//显示图片时读取
        {
            XmlNode node = xmlDoc.SelectSingleNode("PatientBackImage/Image[@Name='" + ImageName + "'] ");

            if (node != null)
            {
                if (node.HasChildNodes)
                {
                    XmlNodeList xmlNolist = node.ChildNodes;
                    foreach (XmlNode xn in xmlNolist)
                    {
                        XmlElement xmlE = (XmlElement)xn;
                        switch (xmlE.Name)
                        {
                        case "DrawLine":
                            DrawLine dl = new DrawLine(Convert.ToInt32(xmlE.GetAttribute("StartPointX")), Convert.ToInt32(xmlE.GetAttribute("StartPointY")), Convert.ToInt32(xmlE.GetAttribute("EndPointX")), Convert.ToInt32(xmlE.GetAttribute("EndPointY")));
                            dl.ID = Convert.ToInt32(xmlE.GetAttribute("ID"));
                            frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll();
                            frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dl);
                            frmImgProcess.imgProcess.drawArea.Capture = true;
                            frmImgProcess.imgProcess.drawArea.Refresh();
                            break;

                        case "DrawRectangle":
                            DrawRectangle dr = new DrawRectangle(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y")), Convert.ToInt32(xmlE.GetAttribute("Width")), Convert.ToInt32(xmlE.GetAttribute("Height")));
                            dr.ID = Convert.ToInt32(xmlE.GetAttribute("ID"));
                            frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll();
                            frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dr);
                            frmImgProcess.imgProcess.drawArea.Capture = true;
                            frmImgProcess.imgProcess.drawArea.Refresh();
                            break;

                        case "DrawEllipse":
                            DrawEllipse de = new DrawEllipse(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y")), Convert.ToInt32(xmlE.GetAttribute("Width")), Convert.ToInt32(xmlE.GetAttribute("Height")));
                            de.ID = Convert.ToInt32(xmlE.GetAttribute("ID"));
                            frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll();
                            frmImgProcess.imgProcess.drawArea.GraphicsList.Add(de);
                            frmImgProcess.imgProcess.drawArea.Capture = true;
                            frmImgProcess.imgProcess.drawArea.Refresh();
                            break;

                        case "DrawPoint":
                            DrawPoint dp = new DrawPoint(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y")));
                            dp.ID = Convert.ToInt32(xmlE.GetAttribute("ID"));
                            frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll();
                            frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dp);
                            frmImgProcess.imgProcess.drawArea.Capture = true;
                            frmImgProcess.imgProcess.drawArea.Refresh();
                            break;

                        case "DrawPolygon":
                            DrawPolygon dpy      = new DrawPolygon();
                            string      pointStr = xmlE.GetAttribute("pointStr");
                            string[]    poList   = pointStr.Split('$');
                            string[]    p        = { };
                            for (int i = 0; i < poList.Length; i++)
                            {
                                if (poList[i].ToString() != "")
                                {
                                    p = poList[i].Split(',');
                                    Point point = new Point(Convert.ToInt32(p[0]), Convert.ToInt32(p[1]));
                                    dpy.pointArray.Add(point);
                                }
                            }
                            dpy.ID = Convert.ToInt32(xmlE.GetAttribute("ID"));
                            frmImgProcess.imgProcess.drawArea.GraphicsList.UnselectAll();
                            frmImgProcess.imgProcess.drawArea.GraphicsList.Add(dpy);
                            frmImgProcess.imgProcess.drawArea.Capture = true;
                            frmImgProcess.imgProcess.drawArea.Refresh();
                            break;

                        case "TextBox":
                            ToolText tx = new ToolText(frmImgProcess.imgProcess.drawArea);
                            tx.Location     = new Point(Convert.ToInt32(xmlE.GetAttribute("X")), Convert.ToInt32(xmlE.GetAttribute("Y")));
                            tx.Width        = Convert.ToInt32(xmlE.GetAttribute("Width"));
                            tx.Height       = Convert.ToInt32(xmlE.GetAttribute("Height"));
                            tx.Name         = xmlE.GetAttribute("ID");
                            tx.Min          = true;
                            tx.Max          = true;
                            tx.IsChangeSize = true;
                            tx.ReadOnly     = false;
                            tx.IsMove       = true;
                            tx.Text         = xmlE.GetAttribute("Content");
                            tx.ForeColor    = System.Drawing.Color.Red;
                            frmImgProcess.imgProcess.drawArea.Controls.Add(tx);
                            break;

                        case "Process":
                            XmlNode nodeProcess = xmlDoc.SelectSingleNode("PatientBackImage/Image[@Name='" + ImageName + "']/Process ");
                            if (nodeProcess != null)
                            {
                                if (nodeProcess.HasChildNodes)
                                {
                                    XmlNodeList xmlNodeProcesslist = nodeProcess.ChildNodes;
                                    foreach (XmlNode xn2 in xmlNodeProcesslist)
                                    {
                                        XmlElement xmlE2 = (XmlElement)xn2;

                                        switch (xmlE2.Name)
                                        {
                                        case "BrightnessCorrection":        //亮度
                                            BrightnessCorrection brightnesscorr = new BrightnessCorrection();
                                            brightnesscorr.AdjustValue = double.Parse(xmlE2.GetAttribute("Value"));
                                            frmImgProcess.imgProcess.ApplyFilter(brightnesscorr);
                                            break;

                                        case "ContrastCorrection":        //对比
                                            ContrastCorrection contrastCorr = new ContrastCorrection();
                                            contrastCorr.Factor = double.Parse(xmlE2.GetAttribute("Value"));
                                            frmImgProcess.imgProcess.ApplyFilter(contrastCorr);
                                            break;

                                        case "HueModifier":        //色相
                                            HueModifier huemodifier = new HueModifier();
                                            huemodifier.Hue = int.Parse(xmlE2.GetAttribute("Value"));
                                            frmImgProcess.imgProcess.ApplyFilter(huemodifier);
                                            break;

                                        case "Saturation":        //饱和度
                                            SaturationCorrection saturationcorr = new SaturationCorrection();
                                            saturationcorr.AdjustValue = double.Parse(xmlE2.GetAttribute("Value"));
                                            frmImgProcess.imgProcess.ApplyFilter(saturationcorr);
                                            break;

                                        case "GrayscaleBT709":        //灰度
                                            GrayscaleBT709 grayscalebt = new GrayscaleBT709();
                                            frmImgProcess.imgProcess.ApplyFilter(grayscalebt);
                                            break;

                                        case "Filter":        //过滤
                                            ColorFiltering colorfilter = new ColorFiltering();
                                            IntRange       red = new IntRange(0, 255);
                                            IntRange       green = new IntRange(0, 255);
                                            IntRange       blue = new IntRange(0, 255);
                                            byte           fillR = 0, fillG = 0, fillB = 0;
                                            string         fillType = "";
                                            red.Min               = int.Parse(xmlE2.GetAttribute("RedMin"));
                                            red.Max               = int.Parse(xmlE2.GetAttribute("RedMax"));
                                            green.Min             = int.Parse(xmlE2.GetAttribute("GreenMin"));
                                            green.Max             = int.Parse(xmlE2.GetAttribute("GreenMax"));
                                            blue.Min              = int.Parse(xmlE2.GetAttribute("BlueMin"));
                                            blue.Max              = int.Parse(xmlE2.GetAttribute("BlueMax"));
                                            fillR                 = byte.Parse(xmlE2.GetAttribute("FillRed"));
                                            fillG                 = byte.Parse(xmlE2.GetAttribute("FillGreen"));
                                            fillB                 = byte.Parse(xmlE2.GetAttribute("FillBlue"));
                                            fillType              = xmlE2.GetAttribute("FillType");
                                            colorfilter.Red       = red;
                                            colorfilter.Green     = green;
                                            colorfilter.Blue      = blue;
                                            colorfilter.FillColor = new RGB(fillR, fillG, fillB);
                                            if (fillType == "OutSide")
                                            {
                                                colorfilter.FillOutsideRange = true;
                                            }
                                            else
                                            {
                                                colorfilter.FillOutsideRange = false;
                                            }
                                            frmImgProcess.imgProcess.ApplyFilter(colorfilter);
                                            break;

                                        case "Gaussian":        //柔化
                                            GaussianBlur gaussianBlur = new GaussianBlur();
                                            gaussianBlur.Sigma = double.Parse(xmlE2.GetAttribute("Sigma"));
                                            gaussianBlur.Size  = int.Parse(xmlE2.GetAttribute("Size"));
                                            frmImgProcess.imgProcess.ApplyFilter(gaussianBlur);
                                            break;

                                        case "DifferenceEdgeDetector":        //边缘增强
                                            DifferenceEdgeDetector differenceEdgeD = new DifferenceEdgeDetector();
                                            frmImgProcess.imgProcess.ApplyFilter(differenceEdgeD);
                                            break;

                                        case "RotateFlip":        //镜像
                                            frmImgProcess.imgProcess.drawArea.Image.RotateFlip(RotateFlipType.RotateNoneFlipX);
                                            frmImgProcess.imgProcess.drawArea.Refresh();
                                            break;

                                        case "PerlinNoise":        //去噪
                                            string value = "";
                                            value = xmlE2.GetAttribute("Value");

                                            float imageWidth  = 0;
                                            float imageHeight = 0;
                                            switch (value)
                                            {
                                            case "Marble":
                                                filter = new Texturer(new MarbleTexture(imageWidth / 96, imageHeight / 48), 0.7f, 0.3f);
                                                break;

                                            case "Wood":
                                                filter = new Texturer(new WoodTexture(), 0.7f, 0.3f);
                                                break;

                                            case "Clouds":
                                                filter = new Texturer(new CloudsTexture(), 0.7f, 0.3f);
                                                break;

                                            case "Labyrinth":
                                                filter = new Texturer(new LabyrinthTexture(), 0.7f, 0.3f);
                                                break;

                                            case "Textile":
                                                filter = new Texturer(new TextileTexture(), 0.7f, 0.3f);
                                                break;

                                            case "Dirty":
                                                TexturedFilter f = new TexturedFilter(new CloudsTexture(), new Sepia());
                                                f.PreserveLevel = 0.30f;
                                                f.FilterLevel   = 0.90f;
                                                filter          = f;
                                                break;

                                            case "Rusty":
                                                filter = new TexturedFilter(new CloudsTexture(), new Sepia(), new GrayscaleBT709());
                                                break;
                                            }
                                            frmImgProcess.imgProcess.ApplyFilter(filter);
                                            break;

                                        case "Sharpen":
                                            Sharpen sharpen = new Sharpen();
                                            frmImgProcess.imgProcess.ApplyFilter(sharpen);
                                            break;

                                        case "Mean":
                                            Mean mean = new Mean();
                                            frmImgProcess.imgProcess.ApplyFilter(mean);
                                            break;
                                        }
                                    }
                                }
                            }
                            break;
                        }
                    }
                }
            }
        }
Пример #10
0
 public void DrawEllipse()
 {
     curOperationMode = ModeEnum.Draw;
     curDraw          = new DrawEllipse();
 }
Пример #11
0
 public void ProcessRecord(int flags, EmfPlusRecordType recordType,byte[] RecordData)
 {
     switch (recordType)
     {
         case EmfPlusRecordType.Header:                       
             break;      
         case EmfPlusRecordType.SetPageTransform:
             EMFSetPageTransform P = EMFSetPageTransform.getTransform(flags, RecordData);
             break;
         case EmfPlusRecordType.Object:
             EMFRecordObject O = EMFRecordObject.getObject(flags,RecordData);
             if (O != null)
             {                    
                 if (ObjectTable.Contains(O.ObjectID))
                 {
                     ObjectTable[O.ObjectID] = O;
                 }
                 else
                 {
                     ObjectTable.Add(O.ObjectID,O);
                 }
             }                    
             break;
         case EmfPlusRecordType.DrawLines:
             //After each instruction we must do something, as the object table is constantly being changed...
             //and we need to use what is currently in the table!
             DrawLines DL = new DrawLines(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(DL.Process(flags,RecordData));                  
             break;
         case EmfPlusRecordType.DrawString:
             DrawString DS = new DrawString(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(DS.Process(flags, RecordData));                  
             break;
         case EmfPlusRecordType.FillRects:
             FillRects FR = new FillRects(X, Y, Width, Height,ObjectTable);
             PageItems.AddRange(FR.Process(flags, RecordData));                  
             break;
         case EmfPlusRecordType.DrawRects:
             DrawRects DR = new DrawRects(X, Y, Width, Height,ObjectTable);
             PageItems.AddRange(DR.Process(flags, RecordData));                   
             break;
         case EmfPlusRecordType.FillPolygon:
             FillPolygon FPo = new FillPolygon(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(FPo.Process(flags, RecordData));  
             break;
         case EmfPlusRecordType.DrawEllipse:
            DrawEllipse DE = new DrawEllipse(X, Y, Width, Height,ObjectTable);
            PageItems.AddRange(DE.Process(flags, RecordData));                   
             break;
         case EmfPlusRecordType.FillEllipse:
            FillEllipse FE = new FillEllipse(X, Y, Width, Height,ObjectTable);
            PageItems.AddRange(FE.Process(flags, RecordData));                   
             break;
         case EmfPlusRecordType.FillPie:
             FillPie FP = new FillPie(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(FP.Process(flags, RecordData));               
             break;
         case EmfPlusRecordType.DrawPie:
             DrawPie DP = new DrawPie(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(DP.Process(flags, RecordData));
             break;
         case EmfPlusRecordType.DrawCurve:
             DrawCurve DC = new DrawCurve(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(DC.Process(flags, RecordData));     
             break;
         case EmfPlusRecordType.Comment:
             Comment CM = new Comment(X, Y, Width, Height, ObjectTable);
             PageItems.AddRange(CM.Process(flags, RecordData));
             break;
         default:
             break;
     }
 }