2015-08-28 42 views
-2

我想在用戶拖動矩形時移動矩形。我的代碼是:C#在矩形上的複合變換

private void Grid_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e) 
    { 
     Rectangle r = (sender) as Rectangle; 
     r.RenderTransform = new CompositeTransform { TranslateX = e.DeltaManipulation.Translation.X }; 

    } 

上面的代碼不工作,因爲它應該是這樣的:

r.RenderTransform = new CompositeTransform { TranslateX += e.DeltaManipulation.Translation.X }; 

「+」號,使其工作,但上面的語法給出一個錯誤。當我使用xaml添加Render變換時它工作正常,但我想在c#中完成。任何建議?

+1

待辦事項在ManipulationDelta處理程序的每個調用中都不會設置新的RenderTransform。相反,分配一個變換對象一次,以後只修改那個。 – Clemens

+0

@Clemens我該怎麼做? –

+0

通過將RenderTransform轉換爲CompositeTransform。 – Clemens

回答

0

只是把在評論中提出的解決方案爲答案:

他們的方式你做的是對事件處理程序的每個呼叫分配 CompositeTransform。這不是你想要的。您想要操作現有的CompositeTransform。

爲了實現這一點,你必須手動分配CompositeTransform一次您的事件處理程序外:

r.RenderTransform = new CompositeTransform(); 

在此之後,你可以使用你的事件處理程序如下:

((CompositeTransform)r.RenderTransform).TranslateX += e.DeltaManipulation.Translation.X; 
+0

感謝您的答案,我已經成功完成了翻譯和縮放,但是在縮放操作改變的中心之後,它會影響翻譯,您能提出一些建議嗎? –

+0

@ thewarri0r9我的建議是解決這個問題...... ;-)老實說:你應該爲此提出一個新問題,解釋確切的行爲並展示你的代碼(如何縮放等)。 –

+0

http://stackoverflow.com/questions/32326641/c-sharp-pinch-manipulation-center-changes –