示例#1
0
        public ColorLine(int length, Random rand, InitType init)
        {
            Sorted         = false;
            Colors         = new HSV[length];
            quickSubArrays = new Queue <int[]>();

            quickLeft  = 0;
            quickRight = length - 1;
            quickStart = 0;
            quickEnd   = length;

            for (int i = 0; i < length; i++)
            {
                HSV currentColor = new HSV(0, 0, 0);

                switch (init)
                {
                case InitType.UNLIMITED:
                    currentColor = new HSV(rand.Next(0, 360), 1, 1);
                    break;

                case InitType.RAINBOW:
                    switch (rand.Next(0, 7))
                    {
                    case 0:
                        //currentColor = (new RGB(162, 56, 54)).ToHSV();
                        currentColor = ColorConversions.toHSV(new RGB(255, 0, 0));
                        break;

                    case 1:
                        currentColor = ColorConversions.toHSV(new RGB(221, 111, 0));
                        break;

                    case 2:
                        currentColor = ColorConversions.toHSV(new RGB(208, 217, 10));
                        break;

                    case 3:
                        currentColor = ColorConversions.toHSV(new RGB(0, 255, 20));
                        break;

                    case 4:
                        currentColor = ColorConversions.toHSV(new RGB(0, 167, 244));
                        break;

                    case 5:
                        currentColor = ColorConversions.toHSV(new RGB(119, 47, 182));
                        break;

                    case 6:
                        currentColor = ColorConversions.toHSV(new RGB(161, 32, 123));
                        break;
                    }
                    break;
                }

                Colors[i] = new HSV(currentColor.H, currentColor.S, currentColor.V);
            }
        }
示例#2
0
        Bitmap generateImage()
        {
            Bitmap bitmap = new Bitmap(initialSize.Width, initialSize.Height);

            for (int i = 0; i < initialSize.Width; i++)
            {
                for (int j = 0; j < initialSize.Height; j++)
                {
                    RGB currentPixel = ColorConversions.toRGB(lines[i].Colors[j]);
                    bitmap.SetPixel(i, j, System.Drawing.Color.FromArgb(255, currentPixel.R, currentPixel.G, currentPixel.B));
                }
            }

            return(bitmap);
        }
示例#3
0
        void initialize(InitType init)
        {
            for (int i = 0; i < initialSize.Width; i++)
            {
                lines[i] = new ColorLine(initialSize.Height, rand, init);
                for (int j = 0; j < initialSize.Height; j++)
                {
                    RGB currentPixel = ColorConversions.toRGB(lines[i].Colors[j]);
                    colorImage.SetPixel(i, j, System.Drawing.Color.FromArgb(255, currentPixel.R, currentPixel.G, currentPixel.B));
                }
            }

            gfx.InterpolationMode = InterpolationMode.NearestNeighbor;
            gfx.DrawImage(colorImage, new Rectangle(Point.Empty, pictureBox1.Size));
            pictureBox1.Image = canvas;
        }
示例#4
0
        void updateLineSwap()
        {
            if (sorted)
            {
                return;
            }

            for (int i = 0; i < initialSize.Width; i++)
            {
                RGB pixelA = ColorConversions.toRGB(lines[i].Colors[bubbleHeight]);
                RGB pixelB = ColorConversions.toRGB(lines[i].Colors[bubbleHeight - 1]);

                colorImage.SetPixel(i, bubbleHeight, System.Drawing.Color.FromArgb(255, pixelA.R, pixelA.G, pixelA.B));
                colorImage.SetPixel(i, bubbleHeight - 1, System.Drawing.Color.FromArgb(255, pixelB.R, pixelB.G, pixelB.B));
            }
        }
示例#5
0
        public Form1()
        {
            InitializeComponent();

            sorts = new Func <bool>[]
            {
                bubbleSort,
                quickSort,
                () => { return(false); }
            };

            currentSort = Sorts.NONE;
            sorted      = false;

            //sort variables
            bubbleHeight = 1;
            bubbleWidth  = 0;
            makeSwap     = false;
            swaps        = new Queue <int[]>();

            rand                  = new Random();
            canvas                = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            gfx                   = Graphics.FromImage(canvas);
            initialSize           = new Size(128, 64);
            colorImage            = new Bitmap(initialSize.Width, initialSize.Height);
            lines                 = new ColorLine[initialSize.Width];
            gfx.InterpolationMode = InterpolationMode.NearestNeighbor;
            gfx.PixelOffsetMode   = PixelOffsetMode.Half;

            for (int i = 0; i < initialSize.Width; i++)
            {
                lines[i] = new ColorLine(initialSize.Height, rand, InitType.UNLIMITED);
                for (int j = 0; j < initialSize.Height; j++)
                {
                    RGB currentPixel = ColorConversions.toRGB(lines[i].Colors[j]);
                    colorImage.SetPixel(i, j, System.Drawing.Color.FromArgb(255, currentPixel.R, currentPixel.G, currentPixel.B));
                }
            }

            gfx.DrawImage(colorImage, new Rectangle(Point.Empty, pictureBox1.Size));
            pictureBox1.Image = canvas;
        }