//============================================================ // <T>加载设置信息。</T> // // @param xconfig 设置信息 //============================================================ public override void OnLoadConfig(FXmlNode xconfig) { base.OnLoadConfig(xconfig); _designItemCount = xconfig.GetInteger("design_item_count", 1); _spreadCd = (ERcSpread)REnum.ToValue(typeof(ERcSpread), xconfig.Get("spread_cd", "None")); _horizontalCount = xconfig.GetInteger("horizontal_count", 1); _horizontalSpace = xconfig.GetInteger("horizontal_space", 0); _verticalCount = xconfig.GetInteger("vertical_count", 1); _verticalSpace = xconfig.GetInteger("vertical_space", 0); _initialCount = xconfig.GetInteger("initial_count", 0); }
//============================================================ // <T>绘制处理。</T> // // @param args 参数 //============================================================ public override void Draw(SUiDrawArgs args) { // 检查有效性 if (!ComponentResource.OptionValid) { return; } // 设置数据 bool visible = TestVisible(); SIntPoint2 position = CalculatePosition(); args.Position.Assign(position); // 计算数据 _designLocation.Assign(CalculateDisplayPosition()); _designSize.Assign(CalculateDisplaySize()); // 开始层处理 _deviceLayer.Begin(_designLocation.X, _designLocation.Y, _designSize.Width, _designSize.Height); // 检查可见性 if (visible) { OnDrawBegin(args); } //............................................................ // 子控件绘制 if (_components != null) { // 绘制分页 FUiScrollItem item = ActiveItem(); if (item != null) { ERcSpread spreadCd = ScrollViewResource.SpreadCd; // 绘制多个 int itemWidth = item.Size.Width + _horizontalSpace; int itemHeight = item.Size.Height + _verticalSpace; if ((spreadCd == ERcSpread.Horizontal) && (_verticalCount > 0)) { for (int n = 0; n < _designItemCount; n++) { int cx = n % _verticalCount; int cy = (int)(n / _verticalCount); item.Location.Set(itemWidth * cx, itemHeight * cy); item.Draw(args); } } else if ((spreadCd == ERcSpread.Vertical) && (_horizontalCount > 0)) { for (int n = 0; n < _designItemCount; n++) { int cx = n % _horizontalCount; int cy = (int)(n / _horizontalCount); item.Location.Set(itemWidth * cx, itemHeight * cy); item.Draw(args); } } // 恢复设置 item.Location.Set(0, 0); } // 绘制节点 foreach (FUiComponent componment in _components) { FUiControl control = componment as FUiControl; if (control == null) { continue; } if (control is FUiScrollItem) { continue; } control.Draw(args); } } //............................................................ // 结束绘制 if (visible) { _context.Context.TransformLocation(_designLocation.X, _designLocation.Y); OnDrawAfter(args); } // 结束层处理 _deviceLayer.End(); }