/// <summary>
        /// 获取指定的CloudLabel的左上角坐标
        /// </summary>
        /// <param name="sf">已计算出的Label的大小</param>
        /// <param name="label">指定的CloudLabel</param>
        /// <returns></returns>
        protected virtual PointF GetPointF(SizeF sf, CloudLabel label)
        {
            PointF pf = _currPoint;

            if ((pf.X + sf.Width) > this.Width - 20)
            {
                pf = new PointF(RowSpace, pf.Y + sf.Height + RowSpace);
                _lines.Add(_lineNum++, label.Number);
            }
            _currPoint = new PointF(pf.X + sf.Width + ColumnSpace, pf.Y);
            return(pf);
        }
        /// <summary>
        /// Adds the specified cloud.
        /// </summary>
        /// <param name="cloud">The cloud.</param>
        public void Add(IGenerator cloud)
        {
            SizeF stringSize;

            using (Graphics g = this.CreateGraphics())
            {
                string text = cloud.Generator();
                stringSize = g.MeasureString(text, Font);
            }
            CloudLabel cloudLabel = new CloudLabel(cloud, this.CloudItems.Count, stringSize);

            this.CloudItems.Add(cloudLabel);
        }