2012-07-26 100 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的Width和Height進行了相應的處理。我瞧不起這會給你一個想法。

+0

其實我相信有。考慮這個:http://imgur.com/FVIwL。在這裏,以90度旋轉的對象必須被翻譯,以便它停留在邊界矩形的角落。這幅圖還表明,使用上面的公式不足以計算對象的ScaleX和ScaleY。在圖片中,只調整了邊界框的寬度。但是,這是90度對象的高度,而不是其寬度。所以真的,也必須考慮物體相對於邊界框的旋轉角度。 – ASanch 2012-07-27 16:08:01

+0

是在該圖像中有翻譯,但沒有縮放該圖像。翻譯並不改變圖像,它只是通過增加或減少相同數量的對象的每個像素來重新定位對象(即高度和寬度將保持與開始時相同) – ethicallogics 2012-07-27 16:20:54

+0

嗯,我相信這個圖像也有縮放比例。這只是不太明顯。考慮一個稍作修改的例子:http://i.imgur.com/6dCQW.png。在這裏,我們將邊界矩形調整爲原始大小的2倍。這張圖片中的90度物體被縮放(即它的高度是原來的2倍)並且也被翻譯。 – ASanch 2012-07-27 16:41:26