2015-02-02 15 views
13

Kısa bir süre önce, Kinect SDK 2.0'ı kullanmaya başladım ve Control Basics-WPF örneğindeki gibi bir yakınlaştırma ve kaydırma işlevselliğine odaklanıyorum.C# wpf Kinect SDK 2.0'da kaydırma görüntüleyicide yakınlaştırma değeri nasıl elde edilir?

Yakınlaştırma ve kaydırma işlevinin çalışır durumda olması. Sorun şu ki, Pinch zoom hareketi tarafından gerçekleştirilen yakınlaştırma miktarının değerine erişmek istiyorum. Ben k:KinectRegion.ZoomFactor gibi bir şey olacaksa isterdi

<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> 

, ancak kullanılabilir o isnt:

İşte benim xaml olduğunu. Ayrıca, ve Image navigationImage ve ActualHeight özelliklerini Height ve ActualHeight özelliklerini bir günlük dosyasına yazarak, UI öğelerindeki değişiklik değişikliklerini görmeye çalıştım, ancak hiçbir değişiklik göstermiyorlar.

Yakınlaştırma hareketini gerçekleştirdiğimde, görüntünün geçerli yüksekliğini ve genişliğini, orijinal yüksekliğine ve genişliğine göre zoom değerini elde etmek istiyorum.

+0

getirir misin akım matrisi uygulayıp dönüştürmek, bunun yerine yakınlaştırma faktörü olabilir mi? –

cevap

5

Bu Kinect SDK ile ilgisi yoktur, bu bir ScrollViewer yakınlaştırma sorunudur. Yakınlaştırma resmin gerçek boyutunu değiştirmediğinden, k:KinectRegion.ZoomFactor yoktur, bu nedenle yalnızca bazı düzen dönüşümleri gerçekleştirir, bu nedenle Image ürününüzün LayoutTransform özelliğinden yakınlaştırma faktörü alabilirsiniz.

yakınlaştırma faktörünü almalısınız aşağıdaki kodu gibi

şey:

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> 
İlgili konular