public override void OnDraw(Graphics g)
 {
     base.OnDraw(g);             //draw rectangle
     DrawImage.DrawImageOnRect(g, getBackImage());
     if (_items != null)
     {
         DrawingPage.VerifyDrawingOrder(_items, false);
         GraphicsState gs = g.Save();
         if (RotateAngle != 0)
         {
             double    angle = (RotateAngle / 180) * Math.PI;
             Rectangle rc    = this.Rectangle;
             g.TranslateTransform(
                 (rc.Width + (float)(rc.Height * Math.Sin(angle)) - (float)(rc.Width * Math.Cos(angle))) / 2 + rc.X,
                 (rc.Height - (float)(rc.Height * Math.Cos(angle)) - (float)(rc.Width * Math.Sin(angle))) / 2 + rc.Y);
             g.RotateTransform((float)RotateAngle);
         }
         else
         {
             g.TranslateTransform((float)(this.Left), (float)(this.Top));
         }
         for (int i = 0; i < _items.Count; i++)
         {
             DrawingItem item = _items[i];
             if (item.Visible)
             {
                 item.OnDraw(g);
             }
         }
         g.Restore(gs);
     }
 }