Ejemplo n.º 1
0
        public Bitmap GetBitmap(
            IEnumerable <string> texts,
            Color[] colors,
            int width       = 100,
            int height      = 100,
            double minFont  = 1.0,
            double maxFont  = 10.0,
            string fontName = "Arial"
            )
        {
            var bitmap   = new Bitmap(width, height);
            var center   = bitmap.Size.GetCenter();
            var graphics = Graphics.FromImage(bitmap);

            lock (this)
            {
                var textImages = GetStringImages(texts, colors, minFont, maxFont, fontName);
                textImages = textImages
                             .OrderBy(stringImage => - stringImage.Size.Width * stringImage.Size.Height);

                var flags = TextFormatFlags.NoPadding | TextFormatFlags.NoClipping;
                cloudLayouter.PrepareLayouter(center);

                foreach (var textImage in textImages)
                {
                    var rectangle = cloudLayouter.PutNextRectangle(textImage.Size);
                    TextRenderer.DrawText(
                        graphics,
                        textImage.Text,
                        textImage.Font,
                        rectangle.Location,
                        textImage.Color,
                        flags
                        );
                }
            }

            return(bitmap);
        }