public void NotChangeDistanceBetweenVectors() { var ta = coordinateSystemConverter.Transform(a); var tb = coordinateSystemConverter.Transform(b); var delta = new PointF(tb.X - ta.X, tb.Y - ta.Y); ((int)Math.Sqrt(delta.X * delta.X + delta.Y * delta.Y)).Should().Be(a.DistanceTo(b)); }
public void Render(Graphics graphics, TagCloud tagCloud) { var transform = new VectorCoordinateSystemConverter(showRectangles ? tagCloud.LayoutCoveringRectangle : tagCloud.TagsCoveringRectangle); if (showRectangles) { foreach (var rectangle in tagCloud.Rectangles) { var rectF = transform.Transform(rectangle); graphics.FillRectangle(new SolidBrush(rectangle.Size.ToColor()), rectF); graphics.DrawRectangle(new Pen(Color.GreenYellow), rectF.X, rectF.Y, rectF.Width, rectF.Height); } } var rnd = new Random(); foreach (var tag in tagCloud.Tags) { var rectF = transform.Transform(tag.Key); graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; var goodFont = FindFont(graphics, tag.Value, rectF.Size, new Font(FontFamily.GenericMonospace, 128)); var textBrush = textBrushes[rnd.Next(textBrushes.Count)]; graphics.DrawString(tag.Value, goodFont, textBrush, rectF, stringFormat); } }
public static RectangleF Transform(this VectorCoordinateSystemConverter coordinateSystemConverter, Rectangle rectangle) { var a = coordinateSystemConverter.Transform(rectangle.LeftTop); return(new RectangleF(a.X, a.Y, rectangle.Size.Width, rectangle.Size.Height)); }