이미지 회전 샘플.
g.RotateTransform(angle) 만 써도 이미지 회전이 되지만, 구지 g.TranslateTransform((float)returnBitmap.Width / 2, (float)returnBitmap.Height / 2) 을 하는 것은 이미지의 중심을 기준으로 회전을 하기 위함이다.
근데, 소스가 뭔가 문제가 있는건지, 이미지가 조금 찌그러진다. 회사에서 할때는 괜찮았는데...
아... 그리고, 회전 각도는 어떤 각도든 가능하지만, 90, 180, 270도 가 아닌 경우는 이미지가 잘린다.
아무래도 이미지가 사각형이 기준이기 때문에...
아마도 비스듬하게 회전시 늘어나는 공간만큼 이미지를 키워 준다면 가능하지 않을까 싶다.
음... 이건 좀 해볼 필요가 있을지도...
private void btnRotateImage_Click(object sender, EventArgs e) { img = fnRotateImage(img, -90); pictureBox1.Invalidate(); } private Bitmap fnRotateImage(Bitmap b, float angle) { Bitmap returnBitmap = new Bitmap(b.Height, b.Width); Graphics g = Graphics.FromImage(returnBitmap); g.TranslateTransform((float)returnBitmap.Width / 2, (float)returnBitmap.Height / 2); g.RotateTransform(angle); g.TranslateTransform(-(float)b.Width / 2, -(float)b.Height / 2); g.DrawImage(b, new Point(0, 0)); return returnBitmap; }
[원본]
[회전]
-------------------------------------------------------------------------
이미지 왜곡 처리...
이미지 를 출력하는 사각형의 크기도 재조절 해줘야 했다...
private void btnRotateImage_Click(object sender, EventArgs e) { img = fnRotateImage(img, -90); imgRect = new System.Drawing.Rectangle(0, 0, img.Width, img.Height); pictureBox1.Invalidate(); }