private static void PlaceTextOnPicture(Slide slide, Bitmap resizedBackground)
        {
            var offset = new Offset(100, 150, WordStyles.CommonFontSize, 400);

            SlideStyle.TryParse(slide.Text, out var slideStyle);

            for (int i = 0; i < slideStyle.Texts.Count; ++i)
            {
                WordStyle wordStyle = WordStyles.GetWordStyle(
                    slideStyle.Styles[i],
                    slideStyle.Colors[i],
                    slideStyle.Backgrounds[i],
                    WordStyles.CommonFontSize);

                var words = ExtractWordsFromText(slideStyle.Texts[i]);
                for (var j = 0; j < words.Length; j++)
                {
                    var word = words[j];
                    if (word.Contains('\n'))
                    {
                        word = word.Replace("\n", "");
                        offset.NewLine();
                    }

                    DrawWord(resizedBackground, word, wordStyle, offset);
                    offset.TryMakeNewLine();
                }
            }
        }
        private static void DrawWord(
            Bitmap resizedBackground,
            string word,
            WordStyle wordStyle,
            Offset offset
            )
        {
            var graphics     = Graphics.FromImage(resizedBackground);
            var wordPosition = GetWordPosition(offset);

            if (wordStyle.backgroundBrush != null)
            {
                graphics.FillRectangle(wordStyle.backgroundBrush, wordPosition);
            }

            graphics.DrawString(
                word,
                wordStyle.Font,
                wordStyle.SolidBrush,
                wordPosition,
                new StringFormat(StringFormatFlags.NoClip)
                );

            offset.MoveRight(graphics.MeasureString(word, wordStyle.Font).Width);
            //Example, assuming g is your Graphics object, image is your Image object, and color is your Color object:
            //g.FillRectangle(new SolidBrush(color), new Rectangle(Point.Empty, image.Size));
        }
示例#3
0
 /// <summary> 为指定的范围设置样式 </summary>
 public static void SetStyle(Table table, WordStyle style)
 {
     if (style != WordStyle.Follow)
     {
         table.set_Style(GetStyleName(style));
     }
 }
示例#4
0
        private static string GetStyleName(WordStyle style)
        {
            switch (style)
            {
            case WordStyle.Content: return(Content);

            case WordStyle.Title: return(Title);

            case WordStyle.Title1: return(Title1);

            case WordStyle.Title2: return(Title2);

            case WordStyle.Title3: return(Title3);

            case WordStyle.Title4: return(Title4);

            case WordStyle.Picture: return(Picture);

            case WordStyle.Caption_Pic: return(Caption_Pic);

            case WordStyle.Table: return(Table);

            default: return(Content);
            }
        }
示例#5
0
 /// <summary> 为指定的范围设置样式 </summary>
 public static void SetStyle(Range rg, WordStyle style)
 {
     if (style != WordStyle.Follow)
     {
         rg.set_Style(GetStyleName(style));
     }
 }
 //???дубль
 private static void DrawTitleText(Graphics titleGraphic, string title,
                                   WordStyle titleStyle, RectangleF titlePosition)
 {
     titleGraphic.DrawString(title,
                             titleStyle.Font,
                             titleStyle.SolidBrush, titlePosition,
                             new StringFormat(StringFormatFlags.NoClip));
 }
示例#7
0
        /// <summary> 在文档中插入一些内容,但是不自动换行 </summary>
        /// <param name="position"> 文字从哪个位置插入</param>
        /// <param name="data"> 输入的数据 </param>
        /// <param name="style"> 新添加的内容的样式的名称 </param>
        /// <returns>返回的范围为新添加的内容所占的区域,与原内容无关</returns>
        public Range InsertText(string data, int position, WordStyle style = WordStyle.Follow)
        {
            var rg = Document.Range(position, position);

            rg.InsertAfter(data);
            WordStyles.SetStyle(rg, style);

            return(rg);
        }
        private static RectangleF GetTitleTextPosition(Graphics titleGraphic, string title,
                                                       WordStyle titleStyle)
        {
            var   titleMeasurement = titleGraphic.MeasureString(title, titleStyle.Font).Width;
            float titleStartPosX   = 400 - (titleMeasurement / 2);
            float titleStartPosY   = 50;
            var   titlePosition    = new RectangleF(titleStartPosX, titleStartPosY, 600, 100);

            return(titlePosition);
        }
示例#9
0
        private static void DrawWord(Bitmap resizedBackground, string word, WordStyle wordStyle, Offset offset)
        {
            var graphics     = Graphics.FromImage(resizedBackground);
            var wordPosition = GetWordPosition(offset);

            graphics.DrawString(word,
                                wordStyle.Font,
                                wordStyle.SolidBrush, wordPosition,
                                new StringFormat(StringFormatFlags.NoClip));
            offset.MoveRight(graphics.MeasureString(word, wordStyle.Font).Width);
        }
示例#10
0
        /// <summary> 在文档正文中插入一张图片</summary>
        /// <param name="picPath">图片的文件路径</param>
        /// <param name="width">图片的宽度,单位为 point </param>>
        /// <param name="height">图片的高度,单位为 point </param>>
        /// <returns></returns>
        public InlineShape InsertPicture(int position, string picPath,
                                         float width, float height, WordStyle style = WordStyle.Picture)
        {
            var rg = Document.Range(position, position);

            InlineShape shape = rg.InlineShapes.AddPicture(picPath);

            shape.Width  = width;
            shape.Height = height;
            WordStyles.SetStyle(shape.Range, style);
            return(shape);
        }
示例#11
0
 public Phrase(string text, float?fontSize = null, UIColor textColor = null, UIFont font = null, TextDecoration?textDecoration = null, WordStyle style = WordStyle.Word, Action action = null)
 {
     if (text == null)
     {
         throw new ArgumentNullException("text");
     }
     Text           = text;
     FontSize       = fontSize;
     TextColor      = textColor;
     TextDecoration = textDecoration;
     Font           = font;
     Style          = style;
     Action         = action;
 }
示例#12
0
            public Word(int index, string text, UIFont font, UIColor textColor, TextDecoration decoration, WordStyle wordStyle, Action action)
            {
                this.index      = index;
                this.text       = text;
                this.font       = font;
                this.textColor  = textColor;
                this.decoration = decoration;
                this.wordStyle  = wordStyle;
                this.action     = action;

                // We need to use an NSString in order to measure text width
                using (var s = new NSString(text))
                {
                    var size = s.StringSize(font);

                    width     = (int)size.Width;
                    height    = (int)font.LineHeight;
                    ascender  = (int)Math.Round(font.Ascender, MidpointRounding.AwayFromZero);
                    descender = (int)Math.Round(font.Descender, MidpointRounding.AwayFromZero);
                }
            }
示例#13
0
        /// <summary> 在文档中插入一个表格 </summary>
        /// <param name="startIndex">表格起始的位置</param>
        /// <param name="data"> 表格所对应的数据,包含表头。同一行的元素之间用制表符分隔,多行之间用换行符分隔 </param>
        /// <param name="rows"> 表格的行数 </param>
        /// <param name="columns"> 表格的列数 </param>
        public Table InsertTable(Document doc, int startIndex, string data, int rows, int columns, WordStyle style = WordStyle.Table)
        {
            Range rg = doc.Range(Start: startIndex, End: startIndex);

            //
            rg.Text = data;
            Table tb = rg.ConvertToTable(Separator: WdTableFieldSeparator.wdSeparateByTabs,
                                         NumRows: rows, NumColumns: columns);

            WordStyles.SetStyle(tb, style);
            return(tb);
        }
示例#14
0
 /// <summary> 在文档中插入一些内容,并且自动换行 </summary>
 /// <param name="position"> 文字从哪个位置插入</param>
 /// <param name="data"> 输入的数据,如果不赋值,则直接插入一个换行符 </param>
 /// <param name="style"> 新添加的内容的样式的名称 </param>
 /// <returns>返回的范围为新添加的内容所占的区域,与原内容无关</returns>
 public Range InsertParagrph(int position, string data = null, WordStyle style = WordStyle.Follow)
 {
     data = data + Constants.Word.CrLf;
     return(InsertText(data, position, style));
 }