2015-02-02 14 views
13

मैंने हाल ही में किनेक्ट एसडीके 2.0 का उपयोग करना शुरू कर दिया है और नियंत्रण बेसिक्स-डब्ल्यूपीएफ नमूना के रूप में ज़ूम और पैन कार्यक्षमता पर ध्यान केंद्रित कर रहा हूं।सी # wpf Kinect SDK 2.0 में स्क्रॉल व्यूअर में ज़ूम मान कैसे प्राप्त करें?

मुझे ज़ूम और पैन कार्यक्षमता ऊपर और चल रही है। समस्या यह है कि मैं ज़ूम की मात्रा का उपयोग करना चाहता हूं जो पिंच ज़ूम इशारा द्वारा किया गया है।

<UserControl x:Class="ImageNav.NavigationImage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:k="http://schemas.microsoft.com/kinect/2014" 
     mc:Ignorable="d" 
     d:DesignWidth="1200" 
     d:DesignHeight="700" 
     > 

    <Grid Grid.RowSpan="2"> 
     <ScrollViewer Name="scrollViewer" Grid.Row="0" 
         HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" 
         k:KinectRegion.IsHorizontalRailEnabled="true" k:KinectRegion.IsVerticalRailEnabled="true" 
         k:KinectRegion.ZoomMode="Enabled"> 
      <Image Name="navigationImage" RenderTransformOrigin="0.5, 0.5" /> 
     </ScrollViewer> 
     <TextBox x:Name="ZoomTextBox" Grid.Row="1" TextWrapping="Wrap" Text="Zoom: 100%" IsEnabled="False" Panel.ZIndex="10" BorderThickness="0" HorizontalAlignment="Right" VerticalAlignment="Bottom" FontSize="20"/> 
    </Grid> 
</UserControl> 

मैं वहाँ चाहते थे होता k:KinectRegion.ZoomFactor की तरह कुछ हो सकता है, लेकिन यह है कि नहीं है उपलब्ध:

यहाँ मेरी XAML है। मैंने यह देखने की भी कोशिश की है कि जब मैं ज़ूम इशारा करता हूं तो Height और ActualHeightScrollViewer scrollViewer और Image navigationImage को लॉग फ़ाइल में लिखकर ज़ूम इशारा करते हैं, लेकिन वे कोई भी परिवर्तन नहीं दिखाते हैं।

जब मैं ज़ूम इशारा करता हूं, तो मैं मूल ऊंचाई और चौड़ाई के संबंध में छवि की वर्तमान ऊंचाई और चौड़ाई ज़ूम का मूल्य प्राप्त करना चाहता हूं।

+0

आप प्राप्त कर सकते हैं ट्रांसफॉर्म जो मैट्रिक्स से लागू और कटौती हो सकता है शायद इसके बजाय ज़ूम कारक? –

उत्तर

5

इसका किनेक्ट एसडीके के साथ कुछ लेना देना नहीं है, यह ScrollViewer ज़ूमिंग समस्या से अधिक है। कोई k:KinectRegion.ZoomFactor नहीं है क्योंकि ज़ूमिंग छवि के वास्तविक आकार को नहीं बदलती है, यह केवल कुछ लेआउट ट्रांसफॉर्मेशन करती है, इसलिए आप LayoutTransform से Image की ज़ूमिंग कारक प्राप्त कर सकते हैं।

कुछ निम्नलिखित कोड जूमिंग कारक मिलना चाहिए की तरह:

UserControl.Code:

public NavigationImage() 
    { 
     InitializeComponent(); 
     DataContext = this; 
     _zoom = 1.0; 
    } 

    double _zoom; 
    public string ZoomPercentage 
    { 
     get 
     { 
      return _zoom * 100 + "%"; 
     } 
    } 

    private void scrollViewer_MouseWheel(object sender, MouseWheelEventArgs e) 
    { 
     if (e.Delta > 0) 
     { 
      _zoom += 0.1; 
     } 
     else 
     { 
      _zoom -= 0.1; 
     } 

     ScaleTransform scale = new ScaleTransform(_zoom, _zoom); 
     navigationImage.LayoutTransform = scale; 
     OnPropertyChanged("ZoomPercentage"); 
     e.Handled = true; 
    } 

UserControl.Xaml: वर्तमान को

<UserControl x:Class="ImageNav.NavigationImage" ... > 

    <Grid Grid.RowSpan="2"> 
     <ScrollViewer Name="scrollViewer" Grid.Row="0" PreviewMouseWheel="scrollViewer_MouseWheel" 
     .... 
         HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" 
         k:KinectRegion.IsHorizontalRailEnabled="true" k:KinectRegion.IsVerticalRailEnabled="true" 
         k:KinectRegion.ZoomMode="Enabled" 
         > 
      <Image Name="navigationImage" RenderTransformOrigin="0.5, 0.5"/> 
     </ScrollViewer> 
     <TextBox x:Name="ZoomTextBox" Grid.Row="1" Text="{Binding ZoomPercentage, Mode=OneWay}" .... /> 
    </Grid> 
</UserControl> 
संबंधित मुद्दे