示例#1
0
        internal static Surface BuildPackedSurface(Size size, SurfacePacker.RectPacker <Surface> packedRects)
        {
            Surface retval = impl.BuildPackedSurface(size, packedRects);

            retval.ShouldBePacked = false;

            return(retval);
        }
示例#2
0
        private void btnLotsSorted_Click(object sender, EventArgs e)
        {
            packer = new SurfacePacker.RectPacker <object>(Interop.Convert(pictureBox1.ClientSize));
            Random rand = new Random();

            btnOne.Enabled = true;

            for (int i = 0; i < 300; i++)
            {
                Size sz = new Size(rand.Next(minSize, maxSize), rand.Next(minSize, maxSize));

                packer.QueueObject(sz, null);
            }

            packer.AddQueue();

            Redraw();
        }
示例#3
0
        private void btnMany_Click(object sender, EventArgs e)
        {
            packer = new SurfacePacker.RectPacker <object>(Interop.Convert(pictureBox1.ClientSize));
            Random rand = new Random();

            btnOne.Enabled = true;

            for (int i = 0; i < 300; i++)
            {
                Size      sz = new Size(rand.Next(minSize, maxSize), rand.Next(minSize, maxSize));
                Rectangle rect;

                if (packer.FindEmptySpace(sz, out rect))
                {
                    packer.AddRect(rect, null);
                }
            }

            Redraw();
        }
示例#4
0
        private void btnOne_Click(object sender, EventArgs e)
        {
            if (packer == null)
            {
                packer = new SurfacePacker.RectPacker <object>(Interop.Convert(pictureBox1.ClientSize));
            }

            Random    rand = new Random();
            Size      sz   = new Size(rand.Next(minSize, maxSize), rand.Next(minSize, maxSize));
            Rectangle rect;

            if (packer.FindEmptySpace(sz, out rect))
            {
                packer.AddRect(rect, null);
                statusBar1.Panels[1].Text = "Added rect: " + rect.ToString();
            }
            else
            {
                statusBar1.Panels[1].Text = "Failed to add rect of size " + sz.ToString();
            }

            Redraw();
        }
示例#5
0
        /// <summary>
        /// Builds a surface of the specified size, using the information
        /// generated by the SurfacePacker.
        /// </summary>
        /// <param name="size"></param>
        /// <param name="packedRects"></param>
        /// <returns></returns>
        public virtual Surface BuildPackedSurface(Size size, SurfacePacker.RectPacker <Surface> packedRects)
        {
            PixelBuffer buffer = new PixelBuffer(Display.DefaultSurfaceFormat, size);

            foreach (SurfacePacker.RectHolder <Surface> rect in packedRects)
            {
                Surface   surf = rect.Tag;
                Rectangle dest = rect.Rect;

                PixelBuffer pixels = surf.ReadPixels();

                buffer.CopyFrom(pixels, new Rectangle(Point.Empty, surf.SurfaceSize),
                                dest.Location, false);
            }

            Surface retval = new Surface(buffer);

            foreach (SurfacePacker.RectHolder <Surface> rect in packedRects)
            {
                rect.Tag.SetSourceSurface(retval, rect.Rect);
            }

            return(retval);
        }
示例#6
0
        private void btnClear_Click(object sender, EventArgs e)
        {
            packer = new SurfacePacker.RectPacker <object>(Interop.Convert(pictureBox1.ClientSize));

            Redraw();
        }
        private void btnClear_Click(object sender, EventArgs e)
        {
            packer = new SurfacePacker.RectPacker <object>(pictureBox1.ClientSize.ToGeometry());

            Redraw();
        }