private Rectangle GetTransformedRectangle(DockState dockState, Rectangle rect)
{
if (dockState != DockState.DockLeftAutoHide && dockState != DockState.DockRightAutoHide)
return rect;
var pts = new PointF[1];
// the center of the rect
pts[0].X = rect.X + (float)rect.Width / 2;
pts[0].Y = rect.Y + (float)rect.Height / 2;
Rectangle rectTabStrip = this.GetLogicalTabStripRectangle(dockState);
var matrix = new Matrix();
matrix.RotateAt(90, new PointF(rectTabStrip.X + (float)rectTabStrip.Height / 2,
rectTabStrip.Y + (float)rectTabStrip.Height / 2));
matrix.TransformPoints(pts);
return new Rectangle((int)(pts[0].X - (float)rect.Height / 2 + .5F),
(int)(pts[0].Y - (float)rect.Width / 2 + .5F),
rect.Height, rect.Width);
}