public Bitmap BuildCloud(IEnumerable <string> lines, int count, IDrawingConfig drawingConfig) { var mostFrequenWords = filter.Filter(lines); var frequentWords = frequencyAnalyzer.GetFrequencyDict(mostFrequenWords).Take(count); var mostFrequentWords = frequentWords .OrderByDescending(x => x.Value) .Take(count) .ToDictionary(x => x.Key, x => x.Value); mostFrequentWords = dictionaryNormalizer.NormalizeDictionary(mostFrequentWords); var rects = CalculateRectsForWords(mostFrequentWords, drawingConfig.Font); return(cloudDrawer.DrawMap(rects, drawingConfig)); }
public Bitmap DrawMap(IEnumerable <WordInRect> words, IDrawingConfig config) { var mainRect = layoutNormalizer.GetMainRect(words); var normalizedWords = layoutNormalizer.ShiftLayout(words, mainRect); var bitmap = new Bitmap(mainRect.Width, mainRect.Height); var graphics = Graphics.FromImage(bitmap); foreach (var word in normalizedWords) { graphics.DrawString(word.Word, word.Font, config.GenerateBrush(word), word.Rect, StringFormat.GenericTypographic); } return(new Bitmap(bitmap, config.Size)); }