Вы можете добраться на полпути, вызвав метод DrawToBitmap на вашей панели, затем повернув растровое изображение и отобразив его, например. в PictureBox:
Bitmap bmp = new Bitmap(panel.Width, panel.Height);
panel.DrawToBitmap(bmp, new Rectangle(Point.Empty, panel.Size));
bmp.RotateFlip(RotateFlipType.Rotate270FlipNone);
PictureBox pbox = new PictureBox();
pbox.Location = panel.Location;
pbox.SizeMode = PictureBoxSizeMode.AutoSize;
pbox.Image = bmp;
Controls.Remove(panel);
Controls.Add(pbox);
углов поворота кроме приращения 90 градусов также возможны, если вы рисуете растрового изображения в другое растровое изображение с помощью GDI:
Bitmap bmp2 = new Bitmap(bmp.Width + 75, bmp.Height + 100);
Graphics g = Graphics.FromImage(bmp2);
g.TranslateTransform(bmp2.Width/2, bmp2.Height/2);
g.RotateTransform(-15f);
g.TranslateTransform(-bmp.Width/2, -bmp.Height/2);
g.DrawImageUnscaled(bmp, Point.Empty);
g.Dispose();
Проблема, конечно, в том, что вы только отображение изображения вашей панели, а не самой панели, поэтому больше не возможно взаимодействовать с элементами управления внутри. Возможно, это тоже можно было бы сделать, но вам придется столкнуться с сообщениями в окне, что становится довольно сложным. В зависимости от ваших потребностей вы также можете уйти с обработкой событий щелчка и клавиш на PictureBox, манипулирования элементами управления на панели и последующим обновлением изображения.
Возможный дубликат * [Вертикальная метка C# в Windows Forms] (http://stackoverflow.com/questions/1371943/c-sharp-vertical-label-in-a-windows-forms) *. –