protected virtual EditorButtonObjectInfoArgs PrepareButton(ButtonsPanelInfo viewInfo, Graphics g, Rectangle bounds, EditorButtonObjectInfoArgs button) { g = GraphicsInfo.Default.AddGraphics(g); try { var min = ObjectPainter.CalcObjectMinBounds(g, viewInfo.Painter, button); button.Bounds = min; } finally { GraphicsInfo.Default.ReleaseGraphics(); } return(button); }
protected override void CalcButtonRectsCore(EditorButtonObjectCollection collection) { for (int n = collection.Count - 1; n >= 0; n--) { EditorButtonObjectInfoArgs info = collection[n]; ObjectPainter painter = ViewInfo.GetButtonPainter(info); Rectangle buttonRect = painter.CalcObjectMinBounds(info); buttonRect.Width += 10; buttonRect = new Rectangle(this.ClientRect.X, this.ClientRect.Y, buttonRect.Width, this.ClientRect.Height); Rectangle realButtonRect = buttonRect; info.Bounds = realButtonRect; painter.CalcObjectBounds(info); this.ClientRect.Width -= buttonRect.Width; if (this.IsLeft) { this.ClientRect.X += buttonRect.Width; } } }
protected Rectangle CalcGroupCaptionButtonBounds(GroupObjectInfoArgs info) { Rectangle result = Rectangle.Empty; Rectangle captionClient = info.CaptionBounds; if (Painter is SkinGroupObjectPainter) { SkinElementInfo buttonInfo = new SkinElementInfo(Skin[CommonSkins.SkinGroupPanelExpandButton]); Size buttonSize = ObjectPainter.CalcObjectMinBounds(info.Graphics, SkinElementPainter.Default, buttonInfo).Size; if (buttonSize.IsEmpty) { return(Rectangle.Empty); } if (!IsCaptionHorizontal) { int saveWidth = captionClient.Width; captionClient.Width = captionClient.Height; captionClient.Height = saveWidth; saveWidth = captionClient.X; captionClient.X = captionClient.Y; captionClient.Y = saveWidth; } captionClient.Width -= 4; result = Skin[CommonSkins.SkinGroupPanelExpandButton].Offset.GetBounds(captionClient, buttonSize, SkinOffsetKind.Far); if (!IsCaptionHorizontal) { int saveX = result.X; if (CaptionLocation == Locations.Left) { result.X = result.Y; result.Y = captionClient.Width - saveX; } else { result.X = captionClient.Y; result.Y = saveX; } } } else { Size btnSize = new ExplorerBarOpenCloseButtonObjectPainter().CalcObjectMinBounds(new ExplorerBarOpenCloseButtonInfoArgs(info.Cache, Rectangle.Empty, info.Appearance, ObjectState.Normal, true)).Size; result = captionClient; result.Size = btnSize; if (IsCaptionHorizontal) { result.X = (captionClient.Right - result.Width) - 4; result.Y += (captionClient.Height - result.Height) / 2; } else if (CaptionLocation == Locations.Left) { result.X = (captionClient.Width - result.Width) / 2; result.Y += captionClient.Top + 4; } else { result.X = captionClient.X + (captionClient.Width - result.Width) / 2; result.Y += (captionClient.Bottom - result.Width) - 4; } } return(result); }