2016-05-22 11 views
7

के साथ ज़ूमिंग छवि (चुटकी ज़ूम और डबल टैप के साथ), मुझे छवियों को दिखाने की आवश्यकता है (फ्लिप व्यू कंट्रोल का उपयोग करके) और उपयोगकर्ताओं को उन्हें ज़ूम करने की अनुमति देता है (चुटकी ज़ूम और डबल टैप के साथ) और ज़ूम की गई छवि खींचें।यूडब्लूपी - फ्लिप व्यू

मैं इसे फ्लिप व्यू के साथ संगत होना चाहता हूं (मेरा मतलब है कि इसे ड्रैगिंग इशारा नहीं करना चाहिए)।

इसे प्राप्त करने का सबसे अच्छा तरीका क्या है?

उत्तर

7

मुझे छवियों को दिखाने की आवश्यकता है (फ्लिप व्यू कंट्रोल का उपयोग करके) और उपयोगकर्ताओं को उन्हें ज़ूम करने की अनुमति दें (चुटकी ज़ूम और डबल टैप के साथ) और ज़ूम की गई छवि खींचें।

हम उन छवियों (चुटकी ज़ूम के साथ और डबल नल के साथ) और खींचें जूम छवि ज़ूम करने के लिए अनुमति देने के लिए ScrollViewer नियंत्रण और UIElement.DoubleTapped घटना का उपयोग कर सकते हैं।

चुटकी ज़ूम के साथ छवि ज़ूम करने और ज़ूम की गई छवि खींचने के लिए। हम Image को ScrollViewer पर डाल सकते हैं।

हम UIElement.DoubleTapped ईवेंट को ScrollViewer में डबल टैप वाले छवि को ज़ूम करने के लिए जोड़ सकते हैं।

उदाहरण के लिए:

XAML में:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <FlipView Name="MyFlipView"> 
      <FlipView.ItemTemplate> 
       <DataTemplate x:DataType="local:MyImage"> 
        <ScrollViewer MinZoomFactor="1" DoubleTapped="scrollViewer_DoubleTapped" 
        ZoomMode="Enabled"> 
         <Image Source="{Binding Path}" /> 
        </ScrollViewer> 
       </DataTemplate> 
      </FlipView.ItemTemplate> 
     </FlipView> 
    </Grid> 

पीछे कोड में:

public ObservableCollection<MyImage> MyImages; 

public MainPage() 
{ 
    this.InitializeComponent(); 
    MyImages = new ObservableCollection<MyImage>(); 
    MyImages.Add(new MyImage("ms-appx:///Assets/cliff.jpg")); 
    MyImages.Add(new MyImage("ms-appx:///Assets/grapes.jpg")); 
    MyImages.Add(new MyImage("ms-appx:///Assets/rainer.jpg")); 
    MyImages.Add(new MyImage("ms-appx:///Assets/sunset.jpg")); 
    MyImages.Add(new MyImage("ms-appx:///Assets/valley.jpg")); 
    MyFlipView.ItemsSource = MyImages; 
} 

private async void scrollViewer_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e) 
{ 
    var scrollViewer = sender as ScrollViewer; 
    var doubleTapPoint = e.GetPosition(scrollViewer); 

    if (scrollViewer.ZoomFactor != 1) 
    { 
     scrollViewer.ZoomToFactor(1); 
    } 
    else if (scrollViewer.ZoomFactor == 1) 
    { 
     scrollViewer.ZoomToFactor(2); 

     var dispatcher = Window.Current.CoreWindow.Dispatcher; 
     await dispatcher.RunAsync(CoreDispatcherPriority.High,() => 
     { 
      scrollViewer.ScrollToHorizontalOffset(doubleTapPoint.X); 
      scrollViewer.ScrollToVerticalOffset(doubleTapPoint.Y); 
     }); 
    } 
} 

और MyImage कक्षा कोड:

public class MyImage 
{ 
    public MyImage() 
    { 
    } 

    public MyImage(string uri) 
    { 
     this.Path = uri; 
    } 

    public string Path { get; set; } 
} 
+0

दुर्भाग्य से, यह एक समस्या के कारण । जब मैं गैलरी में जाता हूं, तो मेरी छवियां पहले से ज़ूम की जाती हैं (जैसे स्ट्रेच = "वर्दी" काम नहीं करती)। मेरे द्वारा यह कैसे किया जा सकता है? – michalsol

+0

कृपया 'वर्टिकलस्क्रोलबर्विज़िबिलिटी = "ऑटो" क्षैतिज स्क्रॉलबारी दृश्यता = "स्क्रॉल व्यूअर" के "ऑटो" को हटा दें। मैंने अपना जवाब अपडेट कर लिया है। –

+0

ठीक है, धन्यवाद! मुझे छवि को नियंत्रण के अंदर रखने की भी आवश्यकता है, लेकिन अब यह काम करता है! :) – michalsol

संबंधित मुद्दे