示例#1
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;
            }
        }
示例#2
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;
     }
 }