Image CreatePreviewImage(string s,int pos,char c) { int height = 80; int width = 530; int space = 2; int size = 35; int leftSpan = 15; int topSpan = 40; ArrayList squareArray = new ArrayList(); IGlyph glyph; for(int i=0;i<s.Length;i++) { glyph = new Square(leftSpan + i*(size + space),topSpan,size,Color.HotPink,GlyphAppearance.Flat,s[i].ToString()); squareArray.Add(glyph); } SquareLine squareLine = new SquareLine(1,1,1,squareArray); Rectangle rec = new Rectangle(0,0,0,0); if(pos >= 1 && pos <= s.Length) { rec = ((IGlyph)squareArray[pos-1]).Bounds; } else if(pos == s.Length + 1) { Rectangle lastRectangle = ((IGlyph)squareArray[pos-2]).Bounds; rec = new Rectangle(lastRectangle.X + lastRectangle.Width + space,lastRectangle.Y - lastRectangle.Height,lastRectangle.Width,lastRectangle.Height); } Square insertSquare = new Square(rec.X,topSpan - size - 2,rec.Width,Color.Green,GlyphAppearance.Flat,c.ToString()); //最后初始化所有的迭代器 IIterator arrayIterator = squareLine.CreateIterator(); IIterator nullIterator = insertSquare.CreateIterator(); Bitmap bmp = new Bitmap(width,height); Graphics g = Graphics.FromImage(bmp); for(IIterator iterator = arrayIterator.First();!arrayIterator.IsDone();iterator = arrayIterator.Next()) { iterator.CurrentItem.Draw(g); } nullIterator.CurrentItem.Draw(g); return bmp; }
public override void InitGraph() { SquareLine squareLine; Square insertSquare; ArrayList squareArray = new ArrayList(); IGlyph glyph; for(int i=0;i<status.Length;i++) { glyph = new Square(40 + i*(squareSize + squareSpace),20 + squareSize + 10,squareSize,status.图形背景色,status.图形外观,status.L[i].ToString()); squareArray.Add(glyph); } //最后再添加一个额外的元素,以保存插入元素后的数组的最后一个元素 squareArray.Add(new Square(1,1,2,Color.Transparent,"")); squareLine = new SquareLine(20,80,status.Length*(squareSize+20+10),squareArray); Rectangle rec = new Rectangle(0,0,0,0); if(status.I >= 1 && status.I <= status.Length) { rec = ((IGlyph)squareArray[status.I-1]).Bounds; } else if(status.I == status.Length + 1) { Rectangle lastRectangle = ((IGlyph)squareArray[status.I-2]).Bounds; rec = new Rectangle(lastRectangle.X + lastRectangle.Width + squareSpace,lastRectangle.Y - 10 - lastRectangle.Height,lastRectangle.Width,lastRectangle.Height); } insertSquare = new Square(rec.X,20,rec.Width,status.插入元素背景色,status.图形外观,status.E.ToString()); //最后初始化所有的迭代器 arrayIterator = squareLine.CreateIterator(); nullIterator = insertSquare.CreateIterator(); }