예제 #1
0
        private static Record EncodeImages(IList <Image> images)
        {
            MSODRAWINGGROUP    drawingGroup = new MSODRAWINGGROUP();
            MsofbtDggContainer dggContainer = new MsofbtDggContainer();

            drawingGroup.EscherRecords.Add(dggContainer);

            MsofbtDgg dgg = new MsofbtDgg();

            dgg.NumSavedDrawings = images.Count;
            dgg.NumSavedShapes   = images.Count + 1;
            dgg.MaxShapeID       = 1024 + dgg.NumSavedShapes;
            dgg.GroupIdClusters.Add(1, dgg.NumSavedShapes);
            dggContainer.EscherRecords.Add(dgg);

            MsofbtBstoreContainer bstoreContainer = new MsofbtBstoreContainer();

            bstoreContainer.Instance = (ushort)images.Count;
            foreach (Image image in images)
            {
                MsofbtBSE blipStoreEntry = new MsofbtBSE();
                blipStoreEntry.UID                  = Guid.NewGuid();
                blipStoreEntry.Ref                  = 1;
                blipStoreEntry.Version              = 2;
                blipStoreEntry.BlipRecord           = CreateBlipRecord(image);
                blipStoreEntry.BlipRecord.Type      = image.Format;
                blipStoreEntry.BlipRecord.ImageData = image.Data;
                blipStoreEntry.BlipRecord.UID       = blipStoreEntry.UID;
                blipStoreEntry.BlipRecord.Marker    = 255;
                blipStoreEntry.SetBlipType(image.Format);
                bstoreContainer.EscherRecords.Add(blipStoreEntry);
            }
            dggContainer.EscherRecords.Add(bstoreContainer);

            MsofbtOPT defautProperties = new MsofbtOPT();

            defautProperties.Add(PropertyIDs.FitTextToShape, 524296);
            defautProperties.Add(PropertyIDs.FillColor, 134217793);
            defautProperties.Add(PropertyIDs.LineColor, 134217792);
            dggContainer.EscherRecords.Add(defautProperties);

            MsofbtSplitMenuColors splitMenuColors = new MsofbtSplitMenuColors();

            splitMenuColors.Instance = 4;
            splitMenuColors.Color1   = 134217741;
            splitMenuColors.Color2   = 134217740;
            splitMenuColors.Color3   = 134217751;
            splitMenuColors.Color4   = 268435703;
            dggContainer.EscherRecords.Add(splitMenuColors);

            return(drawingGroup);
        }
예제 #2
0
        private static Record EncodeImages(IList <Image> images)
        {
            MSODRAWINGGROUP    mSODRAWINGGROUP    = new MSODRAWINGGROUP();
            MsofbtDggContainer msofbtDggContainer = new MsofbtDggContainer();

            mSODRAWINGGROUP.EscherRecords.Add(msofbtDggContainer);
            MsofbtDgg msofbtDgg = new MsofbtDgg();

            msofbtDgg.NumSavedDrawings = images.Count;
            checked
            {
                msofbtDgg.NumSavedShapes = images.Count + 1;
                msofbtDgg.MaxShapeID     = 1024 + msofbtDgg.NumSavedShapes;
                msofbtDgg.GroupIdClusters.Add(1, msofbtDgg.NumSavedShapes);
                msofbtDggContainer.EscherRecords.Add(msofbtDgg);
                MsofbtBstoreContainer msofbtBstoreContainer = new MsofbtBstoreContainer();
                msofbtBstoreContainer.Instance = (ushort)images.Count;
                foreach (Image current in images)
                {
                    MsofbtBSE msofbtBSE = new MsofbtBSE();
                    msofbtBSE.UID                  = Guid.NewGuid();
                    msofbtBSE.Ref                  = 1;
                    msofbtBSE.Version              = 2;
                    msofbtBSE.BlipRecord           = WorkbookEncoder.CreateBlipRecord(current);
                    msofbtBSE.BlipRecord.Type      = current.Format;
                    msofbtBSE.BlipRecord.ImageData = current.Data;
                    msofbtBSE.BlipRecord.UID       = msofbtBSE.UID;
                    msofbtBSE.BlipRecord.Marker    = 255;
                    msofbtBSE.SetBlipType(current.Format);
                    msofbtBstoreContainer.EscherRecords.Add(msofbtBSE);
                }
                msofbtDggContainer.EscherRecords.Add(msofbtBstoreContainer);
                MsofbtOPT msofbtOPT = new MsofbtOPT();
                msofbtOPT.Add(PropertyIDs.FitTextToShape, 524296u);
                msofbtOPT.Add(PropertyIDs.FillColor, 134217793u);
                msofbtOPT.Add(PropertyIDs.LineColor, 134217792u);
                msofbtDggContainer.EscherRecords.Add(msofbtOPT);
                MsofbtSplitMenuColors msofbtSplitMenuColors = new MsofbtSplitMenuColors();
                msofbtSplitMenuColors.Instance = 4;
                msofbtSplitMenuColors.Color1   = 134217741;
                msofbtSplitMenuColors.Color2   = 134217740;
                msofbtSplitMenuColors.Color3   = 134217751;
                msofbtSplitMenuColors.Color4   = 268435703;
                msofbtDggContainer.EscherRecords.Add(msofbtSplitMenuColors);
                return(mSODRAWINGGROUP);
            }
        }