2012-07-26 4 views
1

캔버스에서 여러 개의 선택된 객체를 크기 조정하기위한 알고리즘을 알아 내려고하고 있습니다 (Visio의 동작과 비슷 함). 예를 들어 말해 나는 내 응용 프로그램에서 다음 선택한 객체를 가지고 : 경계 사각형을 기준으로 여러 객체 크기 조정

그때 다음과 같은 결과 생성하여 선택한 객체의 크기를 증가하고 경계 상자의 오른쪽 핸들을 드래그 :

enter image description here

  1. 어떻게 각 개체에 적용되는 스케일링의 양을 어떻게해야합니까 다음과 같이

    내 질문

    은?
  2. 각 개체에 적용 할 번역 량을 얻으려면 어떻게해야합니까?

이 질문에 대한 답변을 드리겠습니다. 그리고 당신이 도울 수 있기를 바랍니다.

답변

0

안녕하세요 저는 번역이 없다고 생각합니다. 스케일링 만 있습니다. 그 한 가지 쉬운 방법은 너비와 (위의 텍스트 상자)하고 해당 개체의 Scaleing 값을 얻을하려는 경우 다음

ScaleTransform scale = new ScaleTransform(); 
     //_text is the scaled object 
     scale.ScaleX = text.ActualWidth - _width; //_width is width of the textbox at beginning. 
     scale.ScaleY = text.ActualHeight - _height; //_height is the height of textbox at the beginning. 

이 당신에게 객체가 조정되는 양을 줄 것 같은 개체의 높이를 유지하다 너비와 높이가 TextBox의 시작 부분 (예 : 창을 초기화 할 때)에 맞 춥니 다. 나는 이것이 당신에게 아이디어를 줄 것이라고 생각합니다.

+0

사실, 나는 거기 있다고 믿습니다. 이것을 고려하십시오 : http://imgur.com/FVIwL. 여기서 90도 회전 한 객체는 경계 사각형의 모퉁이에 그대로 있도록 변환되어야합니다. 이 그림은 또한 위의 수식을 사용하면 개체의 ScaleX 및 ScaleY를 계산할 때 충분하지 않음을 보여줍니다. 그림에서 테두리 상자의 너비 만 조정되었습니다. 그러나 90도 객체의 높이가 너비 대신 크기가 조정되었습니다. 따라서 경계 상자를 기준으로 한 오브젝트의 회전 각도도 고려해야합니다. – ASanch

+0

해당 이미지에는 번역이 있지만 해당 이미지에는 크기 조정이 없습니다. 변환은 이미지를 개조하지 않습니다. 개체의 모든 픽셀을 동일한 양만큼 늘리거나 줄여서 개체의 위치를 ​​변경합니다. 즉, 높이와 너비는 처음과 동일하게 유지됩니다. – ethicallogics

+0

글쎄, 이미지에 크기 조정이있는 것 같습니다. 그것은 너무도 명백하지 않습니다. 약간 수정 된 예를 생각해보십시오 : http://i.imgur.com/6dCQW.png. 여기서는 경계 사각형의 크기를 원본 크기의 2 배로 조정했습니다. 이 그림의 90도 물체는 크기가 조정되었습니다 (높이가 원래의 2 배). – ASanch

관련 문제