/// <summary> /// 用于删减控件后重新计算并生成新画布 /// </summary> public void ReCalcuateCanvasSize() { CanvasWidth = CanvasHeight = 0; ContentContorls.ForEach(cc => { cc.CalculateControlSize(); CanvasWidth = cc.OffsetPos.X + cc.Width > CanvasWidth ? cc.OffsetPos.X + cc.Width : CanvasWidth; CanvasHeight = cc.OffsetPos.Y + cc.Height > CanvasHeight ? cc.OffsetPos.Y + cc.Height : CanvasHeight; }); //添加画布边界填充 CanvasWidth += CanvasRightPadding; CanvasHeight += CanvasBottomPadding; if (renderTarget2D != null) { renderTarget2D.Dispose(); } renderTarget2D = new RenderTarget2D(Platform.GraphicsDevice, CanvasWidth.ConvertToIntPlus(), CanvasHeight.ConvertToIntPlus()); }
/// <summary> /// 添加控件后计算新的画布大小 /// </summary> /// <param name="contentContorl">添加的控件</param> private void CalculateCanvasSize(IFrameContent contentContorl) { contentContorl.CalculateControlSize();//计算添加控件的大小 //如果新添加的控件大于现在画布的范围则生成适合新控件大小的画布 if (contentContorl.OffsetPos.X + contentContorl.Width > CanvasWidth - CanvasRightPadding || contentContorl.OffsetPos.Y + contentContorl.Height > CanvasHeight - CanvasBottomPadding) { if (contentContorl.OffsetPos.X + contentContorl.Width > CanvasWidth - CanvasRightPadding) { CanvasWidth = contentContorl.OffsetPos.X + contentContorl.Width + CanvasRightPadding;//添加画布边界填充距离 } if (contentContorl.OffsetPos.Y + contentContorl.Height > CanvasHeight - CanvasBottomPadding) { CanvasHeight = contentContorl.OffsetPos.Y + contentContorl.Height + CanvasBottomPadding;//添加画布边界填充距离 } if (renderTarget2D != null) { renderTarget2D.Dispose(); } renderTarget2D = new RenderTarget2D(Platform.GraphicsDevice, CanvasWidth.ConvertToIntPlus(), CanvasHeight.ConvertToIntPlus()); } }