Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
            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);
                }
            }