static void Main(string[] args) { FontManager fontManager = new FontManager( new string[] { "meiryo UI" }, minSize: 14, maxSize: 14 ); IMessageCreator messageCreator = RandomCharactorCreator.makeNumericCreator(minLen_: 3, maxLen_: 7); var drawer = new StringDrawer(messageCreator, fontManager); /* * CharacterRange[] ranges = new CharacterRange[]{new CharacterRange(0, targetString.Length)}; * * format.SetMeasurableCharacterRanges(ranges); * * Region[] regions = g.MeasureCharacterRanges(targetString, font, new RectangleF(x: 0, y: 0, width:256, height:128), format); * * foreach (var r in regions) * { * g.DrawRectangle(Pens.Blue, Rectangle.Round(r.GetBounds(g))); * } */ for (int i = 0; i < 10; i++) { var bitmap = drawer.drawNext(); bitmap.Save(String.Format("sample{0}.png", i)); } }
private void initialize(StringDrawer parent, string text) { //--文字の大きさを取得 string text2 = (text == " " || text == "")?"x": (text == " ")?"空": text; System.Drawing.SizeF inner, outer; if (parent.Vertical) { inner = parent.g.MeasureString("x" + text2, parent.font, StringDrawer.point0, StringDrawer.formatV); inner.Height = inner.Height - parent.fontSizeXV.Height; outer = parent.g.MeasureString(text2, parent.font, StringDrawer.point0, StringDrawer.formatV); } else { inner = parent.g.MeasureString("x" + text2, parent.font); inner.Width = inner.Width - parent.fontSizeX.Width; outer = parent.g.MeasureString(text2, parent.font); } //--各種変数の設定 this.Height = (int)inner.Height; this.Width = (int)inner.Width; this.bmp = new System.Drawing.Bitmap( (int)outer.Width, (int)outer.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb ); //--文字の描画 System.Drawing.Graphics g = this.CreateGraphics(); g.TextRenderingHint = parent.g.TextRenderingHint; g.Clear(System.Drawing.Color.Transparent); if (parent.Vertical) { g.DrawString(text, parent.font, parent.brush, -2, -2, StringDrawer.formatV); } else { g.DrawString(text, parent.font, parent.brush, -2, 0); } }