Exemple #1
0
        public void InitializeTests()
        {
            center = new Point(1000, 1000);
            var spiral = new ArchimedesSpiral(center);

            cloudLayouter = new CloudLayouter(spiral, center);
        }
        private static void FillCloudWithRectangles(CloudLayouter cloud)
        {
            var rnd = new Random();

            for (var i = 0; i < CountOfRectangles; i++)
            {
                var width  = rnd.Next(MinSizeOfRectangle * 10, MaxSizeOfRectangle * 10);
                var height = rnd.Next(MinSizeOfRectangle, MaxSizeOfRectangle);

                var size = new Size(width, height);

                cloud.PutNextRectangle(size);
            }
        }
        public static void Main()
        {
            var center = new Point(BitmapWidth / 2, BitmapHeight / 2);
            var spiral = new ArchimedesSpiral(center);

            var cloudLayouter = new CloudLayouter(spiral, center);

            FillCloudWithRectangles(cloudLayouter);

            var bitmap    = GetBitmapWithRectangles(cloudLayouter);
            var directory = Environment.CurrentDirectory;

            bitmap.Save($"{directory}\\..\\..\\Images\\{BitmapName}{CountOfRectangles}.png", ImageFormat.Png);
        }
        public static Bitmap GetBitmapWithRectangles(CloudLayouter cloudLayouter)
        {
            var bitmap = new Bitmap(BitmapWidth, BitmapHeight);
            var pen    = new Pen(Color.Black);

            var rectangles = cloudLayouter.Rectangles;
            var center     = cloudLayouter.Center;

            var maxDist = (int)rectangles
                          .Select(x => GetDistanceFromRectangleToPoint(x, center))
                          .Max();

            foreach (var rectangle in rectangles)
            {
                var color = GetColorOfRectangle(rectangle, center, maxDist);
                var brush = new SolidBrush(color);

                Graphics.FromImage(bitmap).FillRectangle(brush, rectangle);
                Graphics.FromImage(bitmap).DrawRectangle(pen, rectangle);
            }

            return(bitmap);
        }