패널 중간에 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에서 클릭 및 키 이벤트를 처리하고, 패널에서 컨트롤을 조작 한 다음 이미지를 업데이트 할 수 있습니다.
* [Windows Forms에서 C# 수직 레이블] (http://stackoverflow.com/questions/1371943/c-sharp-vertical-label-in-a-windows-forms) *. –