2009-04-13 2 views
1

내가 캔버스에 특정 각도와 이미지를 그릴 필요가 각도 N을 회전해야하고, 그 중심은, X에서 YCanvas에 이미지를 그리기 위해 gdi +에서 샘플을 제공 할 수 있습니까?

 Matrix myPathMatrix; 
     myPathMatrix.Translate(x, y, MatrixOrderAppend); 
     myPathMatrix.Rotate(angle, MatrixOrderAppend); 
     canvas->SetTransform(&myPathMatrix); 
     Draw(canvas);// draw the image 
     myPathMatrix.Rotate(-angle, MatrixOrderAppend); 
     myPathMatrix.Translate(-x, -y, MatrixOrderAppend); 
     canvas->SetTransform(&myPathMatrix); 

이다 그러나 나는 IMG가 왼쪽 상단 모서리에 의해 회전 찾아, 이미지가 중심과 함께 회전해야합니다. 어떻게해야합니까? 많은 감사합니다!

답변

2

기본적으로 왼쪽 상단의 회전 "중심"을 변경해야합니다. 여기
내가 그물에서 발견 된 일부 코드 :

private Bitmap rotateImage(Bitmap b, float angle) 
{ 
    //create a new empty bitmap to hold rotated image 
    Bitmap returnBitmap = new Bitmap(b.Width, b.Height); 
    //make a graphics object from the empty bitmap 
    Graphics g = Graphics.FromImage(returnBitmap); 
    //move rotation point to center of image 
    g.TranslateTransform((float)b.Width/2, (float)b.Height/2); 
    //rotate 
    g.RotateTransform(angle); 
    //move image back 
    g.TranslateTransform(-(float)b.Width/2,-(float)b.Height/2); 
    //draw passed in image onto graphics object 
    g.DrawImage(b, new Point(0, 0)); 
    return returnBitmap; 
} 
+0

대단히 감사합니다! – user25749

관련 문제