public void Draw(LayoutItem layoutItem) { Font font = GetFont(layoutItem.Word.Occurrences); Color color = GetPresudoRandomColorFromPalette(layoutItem); //m_Graphics.DrawString(layoutItem.Word, font, brush, layoutItem.Rectangle); Point point = new Point((int)layoutItem.Rectangle.X, (int)layoutItem.Rectangle.Y); TextRenderer.DrawText(m_Graphics, layoutItem.Word.Text, font, point, color); }
public void DrawEmphasized(LayoutItem layoutItem) { Font font = GetFont(layoutItem.Word.Occurrences); Color color = GetPresudoRandomColorFromPalette(layoutItem); //m_Graphics.DrawString(layoutItem.Word, font, brush, layoutItem.Rectangle); Point point = new Point((int)layoutItem.Rectangle.X, (int)layoutItem.Rectangle.Y); TextRenderer.DrawText(m_Graphics, layoutItem.Word.Text, font, point, Color.LightGray); int offset = (int)(5 *font.Size / MaxFontSize)+1; point.Offset(-offset, -offset); TextRenderer.DrawText(m_Graphics, layoutItem.Word.Text, font, point, color); }
public void Arrange(IEnumerable<IWord> words, IGraphicEngine graphicEngine) { if (words == null) { throw new ArgumentNullException("words"); } foreach (IWord word in words) { SizeF size = graphicEngine.Measure(word.Text, word.Occurrences); RectangleF freeRectangle; if (!TryFindFreeRectangle(size, out freeRectangle)) { return; } LayoutItem item = new LayoutItem(freeRectangle, word); QuadTree.Insert(item); } }
protected override void OnMouseMove(MouseEventArgs e) { LayoutItem nextItemUnderMouse; Point mousePositionRelativeToControl = this.PointToClient(new Point(MousePosition.X, MousePosition.Y)); this.TryGetItemAtLocation(mousePositionRelativeToControl, out nextItemUnderMouse); if (nextItemUnderMouse != m_ItemUderMouse) { if (nextItemUnderMouse != null) { Rectangle newRectangleToInvalidate = RectangleGrow(nextItemUnderMouse.Rectangle, 6); this.Invalidate(newRectangleToInvalidate); } if (m_ItemUderMouse != null) { Rectangle prevRectangleToInvalidate = RectangleGrow(m_ItemUderMouse.Rectangle, 6); this.Invalidate(prevRectangleToInvalidate); } m_ItemUderMouse = nextItemUnderMouse; } base.OnMouseMove(e); }
public bool TryGetItemAtLocation(Point location, out LayoutItem foundItem) { foundItem = null; IEnumerable<LayoutItem> itemsInArea = GetItemsInArea(new RectangleF(location, new SizeF(0, 0))); foreach (LayoutItem item in itemsInArea) { foundItem = item; return true; } return false; }
private Color GetPresudoRandomColorFromPalette(LayoutItem layoutItem) { Color color = Palette[layoutItem.Word.Occurrences * layoutItem.Word.Text.Length % Palette.Length]; return color; }