만약, 여러 개의 사진이나 그림을 선택하고, 폭이 5cm가 되도록 리본 메뉴나 개체 속성에서 폭이나 높이를 입력하게 되면, 회전되지 않은 개체는 원하는대로 지정이 되지만, 회전된 개체는 원하는 크기로 변경되지 않습니다.
예를 들어 아래와 같이 폭 10cm, 높이 5cm 그림을 삽입하고, 약 30도 회전(파란색 사각형)시켰다고 했을 때, 이 그림의 폭을 8cm로 바꾸게 되면, 주황색 사각형과 같이 원본의 폭을 8cm로 바꾸게 됩니다. 얼핏 생각하기에는 사진의 폭(width)이 바뀌어야할 것 같은데, 회전시키기 전의 원본 그림의 크기 속성을 바꿔버립니다.
그림이 갖고 있는 위치, 크기, 회전 정보를 각각 저장하고 있기 때문에 그러한 개념을 잘 이해하는 사람들은 개체를 컨트롤하는 것이 쉬울 수 있습니다만, 파워포인트에 도형이나 사진을 넣고 그 개체가 얼마나 회전되었는지 일일이 기억하면서 작업하는 것은 상당히 번거로운 일입니다. 다시말해, 작업자 입장에서는 그냥 그림이 회전되어있든 말든, 폭이나 높이를 변경하면 원본의 속성을 변경하는게 아니라 보이는 도형의 폭과 높이가 바뀌는게 편리하겠지요.
만약 매크로를 작성하여 도형의 크기를 일괄적으로 변경하려면, 도형의 회전 여부에 무관하게 현재 보이는 상태에서 크기를 바꿔주도록 매크로를 작성하는 것이 직관적으로 사용하기 좋은 매크로가 될 것입니다. 따라서, 현재 도형이나 사진의 회전 상태를 감안하여, 개체의 크기나 위치 정보를 수정해서 가져올 수 있다면 좋을 것입니다.
아래의 매크로는 도형의 개체속성으로부터 회전된 상태 그대로의 위치 정보를 가져오는 매크로입니다. 정보를 가져왔다고 해서, 바로 도형의 크기를 변경할 수 있는 것은 아닙니다만, 유사한 매크로를 작성하여 도형의 크기를 직관적으로 변경하는 매크로로 응용할 수 있습니다.
-----------------------------------------------
Public Type typePicPos
Left As Single
Top As Single
Height As Single
Width As Single
Rotation As Single
CX As Single
CY As Single
End Type
-----------------------------------------------
With iSh
tPos.Rotation = Get1QAngle(.Rotation)
tPos.CX = .Left + .Width / 2
tPos.CY = .Top + .Height / 2
tPos.Width = .Width * Cos(tPos.Rotation / 180 * Pi) + .Height * Sin(tPos.Rotation / 180 * Pi)
tPos.Height = .Height * Cos(tPos.Rotation / 180 * Pi) + .Width * Sin(tPos.Rotation / 180 * Pi)
tPos.Left = tPos.CX - tPos.Width / 2
tPos.Top = tPos.CY - tPos.Height / 2
End With
GetPositionOfRotatedShape = tPos
End Function
-----------------------------------------------
댓글 없음:
댓글 쓰기
의견이나 질문이 있으신 분은 언제든지 댓글을 달아주세요~