Smrf.NodeXL.Layouts.RectangleBinner.TryGetNextBin C# (CSharp) Method

TryGetNextBin() public method

public TryGetNextBin ( Rectangle &nextBin ) : System.Boolean
nextBin System.Drawing.Rectangle
return System.Boolean
    TryGetNextBin
    (
        out Rectangle nextBin
    )
    {
        AssertValid();

        nextBin = m_oLastBin;

        // Move the bin rectangle one column to the right.

        nextBin.Offset(m_iBinLength, 0);

        if ( !m_oParent.Contains(nextBin) )
        {
            // Move the bin rectangle one row up and back to the leftmost
            // column.

            nextBin = Rectangle.FromLTRB(
                m_oParent.Left,
                nextBin.Top - m_iBinLength,
                m_oParent.Left + m_iBinLength,
                nextBin.Bottom - m_iBinLength
                );

            if ( !m_oParent.Contains(nextBin) )
            {
                // There is no room for an additional bin rectangle.

                return (false);
            }
        }

        m_oLastBin = nextBin;
        m_bBinReturned = true;
        return (true);
    }

Usage Example

コード例 #1
0
    Test1()
    {
        // 2 rows of 3 bins each, space left over at top.

        RectangleBinner oRectangleBinner = new RectangleBinner(
            new Rectangle( new Point(1, 1), new Size(6, 5) ),
            2);

        Rectangle oReturnedBin;

        foreach (Rectangle oExpectedBin in new Rectangle[] {

            new Rectangle( new Point(1, 4), new Size(2, 2) ),
            new Rectangle( new Point(3, 4), new Size(2, 2) ),
            new Rectangle( new Point(5, 4), new Size(2, 2) ),

            new Rectangle( new Point(1, 2), new Size(2, 2) ),
            new Rectangle( new Point(3, 2), new Size(2, 2) ),
            new Rectangle( new Point(5, 2), new Size(2, 2) ),
            } )
        {
            Assert.IsTrue( oRectangleBinner.TryGetNextBin(out oReturnedBin) );
            Assert.AreEqual(oExpectedBin, oReturnedBin);
        }

        Assert.IsFalse( oRectangleBinner.TryGetNextBin(out oReturnedBin) );
        Assert.IsFalse( oRectangleBinner.TryGetNextBin(out oReturnedBin) );

        Rectangle oRemainingRectangle;

        Assert.IsTrue( oRectangleBinner.TryGetRemainingRectangle(
            out oRemainingRectangle) );

        Assert.AreEqual(new Rectangle( new Point(1, 1), new Size(6, 1) ),
            oRemainingRectangle);
    }
All Usage Examples Of Smrf.NodeXL.Layouts.RectangleBinner::TryGetNextBin