private void ResizeBmp(Bitmap bmp, MemoryStream result, int width, int height)
        {
            Bitmap resizedBmp = OrgChartHelper.ResizeImage(bmp, width, height, false);

            //after resize - change the coordinates of the list, in order return the proper coordinates
            resizedBmp.Save(result, this.option.ImageFormat);
            resizedBmp.Dispose();
        }
        /// <summary>
        /// 组织机构图表生成器
        /// </summary>
        /// <param name="nodes"></param>
        /// <param name="option"></param>
        public OrgChartGenerator(List <OrgChartNode> nodes, OrgChartOption option)
        {
            this.nodes = nodes;

            if (option != null)
            {
                this.option = option;
            }

            this.rootNode = OrgChartHelper.BuildTree(this.nodes);

            int maxLevelNodesCount = (from node in nodes
                                      group node by node.Level into gp
                                      select new { Level = gp.Key, Count = gp.Count() }
                                      ).Max(item => item.Count);

            this.isSampleTree = maxLevelNodesCount < this.option.SampeTreeLevelCount;

            if (this.option.UseDefaultIfSampleTree && this.isSampleTree)
            {
                this.option = this.DefaultOption;
            }
        }