Ejemplo n.º 1
0
        /// <summary>
        /// 获得高亮度显示信息对象
        /// </summary>
        /// <param name="element"></param>
        /// <param name="args"></param>
        /// <returns></returns>
        private HighlightInfo GetHighlightInfo(DomElement element)
        {
            if (_HighlightBuffer == null)
            {
                _HighlightBuffer = new HighlightInfoList();
            }
            else
            {
                // 在缓存区中逆向搜索
                // 由于绘制文档内容都是按照顺序绘制文档内容
                for (int iCount = _HighlightBuffer.Count - 1; iCount >= 0; iCount--)
                {
                    if (_HighlightBuffer[iCount].Contains(element))
                    {
                        return(_HighlightBuffer[iCount]);
                    }
                }
            }

            DomContainerElement parent = element.Parent;

            while (parent != null)
            {
                HighlightInfoList infos = parent.GetHighlightInfos();
                if (infos != null && infos.Count > 0)
                {
                    foreach (HighlightInfo info in infos)
                    {
                        if (info.Contains(element))
                        {
                            // 保存在缓存区中
                            _HighlightBuffer.Add(info);
                            return(info);
                        }
                    }
                }
                parent = parent.Parent;
            }
            return(null);
        }