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)); }
/// <summary> 为指定的范围设置样式 </summary> public static void SetStyle(Table table, WordStyle style) { if (style != WordStyle.Follow) { table.set_Style(GetStyleName(style)); } }
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); } }
/// <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)); }
/// <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); }
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); }
/// <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); }
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; }
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); } }
/// <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); }
/// <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)); }