private Rectangle GetTabRectangle(AutoHideTabVS2005 tab, bool transformed)
        {
            DockState dockState    = tab.Content.DockHandler.DockState;
            Rectangle rectTabStrip = GetLogicalTabStripRectangle(dockState);

            if (rectTabStrip.IsEmpty)
            {
                return(Rectangle.Empty);
            }

            int x = tab.TabX;
            int y = rectTabStrip.Y +
                    (dockState == DockState.DockTopAutoHide || dockState == DockState.DockRightAutoHide ?
                     0 : TabGapTop);
            int width  = tab.TabWidth;
            int height = rectTabStrip.Height - TabGapTop;

            if (!transformed)
            {
                return(new Rectangle(x, y, width, height));
            }
            else
            {
                return(GetTransformedRectangle(dockState, new Rectangle(x, y, width, height)));
            }
        }
 private Rectangle GetTabRectangle(AutoHideTabVS2005 tab)
 {
     return(GetTabRectangle(tab, false));
 }
        private void DrawTab(Graphics g, AutoHideTabVS2005 tab)
        {
            Rectangle rectTab = GetTabRectangle(tab);

            if (rectTab.IsEmpty)
            {
                return;
            }

            DockState    dockState = tab.Content.DockHandler.DockState;
            IDockContent content   = tab.Content;

            OnBeginDrawTab(tab);

            Brush brushTabBackGround = BrushTabBackground;
            Pen   penTabBorder       = PenTabBorder;
            Brush brushTabText       = BrushTabText;

            g.FillRectangle(brushTabBackGround, rectTab);

            // Dibujo las lineas del TabStrip
            if (dockState == DockState.DockTopAutoHide || dockState == DockState.DockRightAutoHide)
            {
                g.DrawLine(penTabBorder, rectTab.Left, rectTab.Top, rectTab.Left, rectTab.Bottom - 1);   // Linea Izq.
                g.DrawLine(penTabBorder, rectTab.Right, rectTab.Top, rectTab.Right, rectTab.Bottom - 1); // Linea Der.
                g.DrawLine(penTabBorder, rectTab.Left + 1, rectTab.Bottom, rectTab.Right - 1, rectTab.Bottom);
            }
            else
            {
                g.DrawLine(penTabBorder, rectTab.Left, rectTab.Top + 1, rectTab.Left, rectTab.Bottom);   // Linea Izq.
                g.DrawLine(penTabBorder, rectTab.Right, rectTab.Top + 1, rectTab.Right, rectTab.Bottom); // Linea Der.
                g.DrawLine(penTabBorder, rectTab.Left + 1, rectTab.Top, rectTab.Right - 1, rectTab.Top);
            }

            // Set no rotate for drawing icon and text
            Matrix matrixRotate = g.Transform;

            g.Transform = MatrixIdentity;

            // Draw the icon
            Rectangle rectImage = rectTab;

            rectImage.X += ImageGapLeft;
            rectImage.Y += ImageGapTop;
            int imageHeight = rectTab.Height - ImageGapTop - ImageGapBottom;
            int imageWidth  = ImageWidth;

            if (imageHeight > ImageHeight)
            {
                imageWidth = ImageWidth * (imageHeight / ImageHeight);
            }
            rectImage.Height = imageHeight;
            rectImage.Width  = imageWidth;
            rectImage        = GetTransformedRectangle(dockState, rectImage);
            g.DrawIcon(((Form)content).Icon, rectImage);

            // Draw the text
            if (content == content.DockHandler.Pane.ActiveContent)
            {
                Rectangle rectText = rectTab;
                rectText.X     += ImageGapLeft + imageWidth + ImageGapRight + TextGapLeft;
                rectText.Width -= ImageGapLeft + imageWidth + ImageGapRight + TextGapLeft;
                rectText        = GetTransformedRectangle(dockState, rectText);
                if (dockState == DockState.DockLeftAutoHide || dockState == DockState.DockRightAutoHide)
                {
                    g.DrawString(content.DockHandler.TabText, Font, brushTabText, rectText, StringFormatTabVertical);
                }
                else
                {
                    g.DrawString(content.DockHandler.TabText, Font, brushTabText, rectText, StringFormatTabHorizontal);
                }
            }

            // Set rotate back
            g.Transform = matrixRotate;

            OnEndDrawTab(tab);
        }
    private Rectangle GetTabRectangle(AutoHideTabVS2005 tab, bool transformed) {
      DockState dockState = tab.Content.DockHandler.DockState;
      Rectangle rectTabStrip = GetLogicalTabStripRectangle(dockState);

      if (rectTabStrip.IsEmpty)
        return Rectangle.Empty;

      int x = tab.TabX;
      int y = rectTabStrip.Y +
        (dockState == DockState.DockTopAutoHide || dockState == DockState.DockRightAutoHide ?
        0 : TabGapTop);
      int width = tab.TabWidth;
      int height = rectTabStrip.Height - TabGapTop;

      if (!transformed)
        return new Rectangle(x, y, width, height);
      else
        return GetTransformedRectangle(dockState, new Rectangle(x, y, width, height));
    }
 private Rectangle GetTabRectangle(AutoHideTabVS2005 tab) {
   return GetTabRectangle(tab, false);
 }
    private void DrawTab(Graphics g, AutoHideTabVS2005 tab) {
      Rectangle rectTab = GetTabRectangle(tab);
      if (rectTab.IsEmpty)
        return;

      DockState dockState = tab.Content.DockHandler.DockState;
      IDockContent content = tab.Content;

      OnBeginDrawTab(tab);

      Brush brushTabBackGround = BrushTabBackground;
      Pen penTabBorder = PenTabBorder;
      Brush brushTabText = BrushTabText;

      g.FillRectangle(brushTabBackGround, rectTab);

      // Dibujo las lineas del TabStrip
      if (dockState == DockState.DockTopAutoHide || dockState == DockState.DockRightAutoHide) {
        g.DrawLine(penTabBorder, rectTab.Left, rectTab.Top, rectTab.Left, rectTab.Bottom - 1);   // Linea Izq.
        g.DrawLine(penTabBorder, rectTab.Right, rectTab.Top, rectTab.Right, rectTab.Bottom - 1); // Linea Der.
        g.DrawLine(penTabBorder, rectTab.Left + 1, rectTab.Bottom, rectTab.Right - 1, rectTab.Bottom);
      } else {
        g.DrawLine(penTabBorder, rectTab.Left, rectTab.Top + 1, rectTab.Left, rectTab.Bottom);   // Linea Izq.
        g.DrawLine(penTabBorder, rectTab.Right, rectTab.Top + 1, rectTab.Right, rectTab.Bottom); // Linea Der.
        g.DrawLine(penTabBorder, rectTab.Left + 1, rectTab.Top, rectTab.Right - 1, rectTab.Top);
      }

      // Set no rotate for drawing icon and text
      Matrix matrixRotate = g.Transform;
      g.Transform = MatrixIdentity;

      // Draw the icon
      Rectangle rectImage = rectTab;
      rectImage.X += ImageGapLeft;
      rectImage.Y += ImageGapTop;
      int imageHeight = rectTab.Height - ImageGapTop - ImageGapBottom;
      int imageWidth = ImageWidth;
      if (imageHeight > ImageHeight)
        imageWidth = ImageWidth * (imageHeight / ImageHeight);
      rectImage.Height = imageHeight;
      rectImage.Width = imageWidth;
      rectImage = GetTransformedRectangle(dockState, rectImage);
      g.DrawIcon(((Form)content).Icon, rectImage);

      // Draw the text
      if (content == content.DockHandler.Pane.ActiveContent) {
        Rectangle rectText = rectTab;
        rectText.X += ImageGapLeft + imageWidth + ImageGapRight + TextGapLeft;
        rectText.Width -= ImageGapLeft + imageWidth + ImageGapRight + TextGapLeft;
        rectText = GetTransformedRectangle(dockState, rectText);
        if (dockState == DockState.DockLeftAutoHide || dockState == DockState.DockRightAutoHide)
          g.DrawString(content.DockHandler.TabText, Font, brushTabText, rectText, StringFormatTabVertical);
        else
          g.DrawString(content.DockHandler.TabText, Font, brushTabText, rectText, StringFormatTabHorizontal);
      }

      // Set rotate back
      g.Transform = matrixRotate;

      OnEndDrawTab(tab);
    }