2016-06-08 238 views
0

我在畫布上顯示圖像,我希望能夠移動所有圖像。目前我只能移動我在畫布上展示的最後一幅圖片。我也希望能夠放大這些圖像。請幫助我。如何放大和縮小圖像並移動所有圖像

private TranslateTransform dragTranslation; 

// Constructor 
void Drag_ManipulationDelta(object sender,ManipulationDeltaRoutedEventArgs e) 
{ 
    // Move the rectangle. 

    dragTranslation.X += e.Delta.Translation.X; 

    dragTranslation.Y += e.Delta.Translation.Y; 
}                  


private void Stickers1_SelectionChanged(object sender,SelectionChangedEventArgs e) 
{ 

    var selecteditem = e.AddedItems[0] as StickersImageListModel; 

    Stickers1.Visibility = Visibility.Collapsed; 

    Image imageitem = new Image(); 

    BitmapImage image = new BitmapImage(new System.Uri(selecteditem.Imageurl, UriKind.Absolute)); 

    imageitem.Source = image; 

    my_canvas.Children.Add(imageitem); 

    imageitem.AllowDrop = true; 

    imageitem.ManipulationMode = ManipulationModes.All; 

    imageitem.ManipulationDelta += Drag_ManipulationDelta; 

    dragTranslation = new TranslateTransform(); 

    imageitem.RenderTransform = this.dragTranslation; 

    var st = (ScaleTransform)imageitem.RenderTransform; 

    double zoom = e.Delta > 0 ? .2 : -.2; 

    st.ScaleX += zoom; 

    st.ScaleY += zoom; 

    my_canvas.Visibility = Visibility.Visible; 

} 

回答

0

你不必使用dragTranslation財產

void Drag_ManipulationDelta(object sender,ManipulationDeltaRoutedEventArgs e) 
{ 
    // Move the rectangle. 

    Image img = sender as Image; 
    CompositeTransform ct = img.RenderTransform as CompositeTransform; 
    ct.ScaleX *= e.Delta.Scale; 
    ct.ScaleY *= e.Delta.Scale; 

    if (ct.ScaleX < 1.0) ct.ScaleX = 1.0; 
    if (ct.ScaleY < 1.0) ct.ScaleY = 1.0; 
    if (ct.ScaleX > 4.0) ct.ScaleX = 4.0; 
    if (ct.ScaleY > 4.0) ct.ScaleY = 4.0; 
    //Checking with canvas boundary so that image wont go behind canvas 
    if ((ct.TranslateX + e.Delta.Translation.X) <= (mycanvas.ActualWidth - img.ActualWidth) && ct.TranslateX + e.Delta.Translation.X>=0) 
     ct.TranslateX += e.Delta.Translation.X; 
    if ((ct.TranslateY + e.Delta.Translation.Y) <= (mycanvas.ActualHeight - img.ActualHeight) && ct.TranslateY + e.Delta.Translation.Y >= 0) 
     ct.TranslateY += e.Delta.Translation.Y;  
} 

private void Stickers1_SelectionChanged(object sender,SelectionChangedEventArgs e) 
{   
    ... 
    //Using CompositeTransform instead of TranslateTransform 
    CompositeTransform ct = new CompositeTransform(); 
    imageitem.RenderTransform = ct;  
} 
+0

你加這個'CompositeTransform克拉=新CompositeTransform(); imageitem.RenderTransform = ct;' – Archana

+0

其工作和解決我的邊界問題,謝謝你這麼多 –

+0

先生請解決縮放的問題也 –