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); }
public Image ExtractImage(int index) { if (DrawingGroup != null) { MsofbtDggContainer dggContainer = DrawingGroup.EscherRecords[0] as MsofbtDggContainer; MsofbtBSE blipStoreEntry = dggContainer.BstoreContainer.EscherRecords[index] as MsofbtBSE; if (blipStoreEntry.BlipRecord != null) { return(new Image(blipStoreEntry.ImageData, blipStoreEntry.BlipRecord.Type)); } } return(null); }
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); } }
public Image ExtractImage(int index) { Image result; if (this.DrawingGroup != null) { MsofbtDggContainer msofbtDggContainer = this.DrawingGroup.EscherRecords[0] as MsofbtDggContainer; MsofbtBSE msofbtBSE = msofbtDggContainer.BstoreContainer.EscherRecords[index] as MsofbtBSE; if (msofbtBSE.BlipRecord != null) { result = new Image(msofbtBSE.ImageData, msofbtBSE.BlipRecord.Type); return(result); } } result = null; return(result); }
public List <byte[]> ExtractImages() { List <byte[]> list = new List <byte[]>(); if (this.DrawingGroup != null) { MsofbtDggContainer msofbtDggContainer = this.DrawingGroup.EscherRecords[0] as MsofbtDggContainer; using (List <EscherRecord> .Enumerator enumerator = msofbtDggContainer.BstoreContainer.EscherRecords.GetEnumerator()) { while (enumerator.MoveNext()) { MsofbtBSE msofbtBSE = (MsofbtBSE)enumerator.Current; if (msofbtBSE.BlipRecord != null) { list.Add(msofbtBSE.ImageData); } } } } return(list); }