コード例 #1
0
        public override void InitializePreview(Rectangle rect)
        {
            var top    = (int)nudTopCount.Value;
            var sides  = (int)nudSideCount.Value;
            var bottom = (int)nudBottomCount.Value;

            Cols  = Math.Max(Math.Max(top, bottom), sides);
            Rows  = 4;
            Nodes = new NutcrackerNodes[Rows, Cols];
            for (var row = 0; row < Rows; row++)
            {
                for (var col = 0; col < Cols; col++)
                {
                    Nodes[row, col] = new NutcrackerNodes {
                        Model = new Point(-1, -1)
                    };
                }
            }

            var spacing  = Math.Min(rect.Width, rect.Height);
            var maxWidth = Math.Max(top, bottom);

            var xSpacing = spacing / (maxWidth + 2);
            var ySpacing = spacing / (sides + 2);

            var xOffset = (rect.Width - (xSpacing * (maxWidth + 3))) / 2;
            var yOffset = (rect.Height - (ySpacing * (sides + 3))) / 2;
            int x, y;

            // x = left to right
            // y = top to bottom

            // Starts at bottom left with the left side - should be the left most/bottom most pixel.
            for (y = sides - 1; y >= 0; y--)
            {
                Nodes[0, y].Model = new Point(xSpacing + xOffset, (y + 2) * ySpacing + yOffset);
            }

            // Now top from left to right
            for (x = 0; x < top; x++)
            {
                Nodes[1, x].Model = new Point((x + 1) * xSpacing + xOffset, ySpacing + yOffset);
            }

            // Now top right to bottom right
            x = (maxWidth + 1) * xSpacing + xOffset;
            for (y = 0; y < sides; y++)
            {
                Nodes[2, y].Model = new Point(x, (y + 1) * ySpacing + yOffset);
            }

            // Finally, finish along bottom
            y = (sides + 1) * ySpacing + yOffset;
            var margin = top <= bottom ? 0 : top - bottom;

            for (x = bottom - 1; x >= 0; x--)
            {
                Nodes[3, x].Model = new Point((x + 2 + margin) * xSpacing + xOffset, y);
            }
        }
コード例 #2
0
ファイル: NutcrackerModelBase.cs プロジェクト: egold555/Comet
 internal virtual void ResetNodes()
 {
     Nodes = new NutcrackerNodes[Rows, Cols];
     for (var row = 0; row < Rows; row++)
     {
         for (var col = 0; col < Cols; col++)
         {
             Nodes[row, col] = new NutcrackerNodes();
         }
     }
 }