Ejemplo n.º 1
0
 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;
         }
     }
 }
Ejemplo n.º 3
0
        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);
        }