/ / Jak uzyskać wartość powiększenia w przeglądarce przewijania w C # wpf Kinect SDK 2.0? - c #, wpf, scrollview, kinect, kinect-sdk

Jak uzyskać wartość powiększenia w przeglądarce przewijania w C # wpf Kinect SDK 2.0? - c #, wpf, scrollview, kinect, kinect-sdk

Niedawno zacząłem używać zestawu Kinect SDK 2.0 i skupiam się na funkcji zoomu i panoramy, jak w przykładzie Control Basics-WPF.

Mam działającą funkcję powiększania i przesuwania. Problem polega na tym, że chcę uzyskać dostęp do wartości powiększenia, która została wykonana przez gest powiększenia palcem.

Oto mój xaml:

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

Chciałbym, żeby było coś takiego k:KinectRegion.ZoomFactor, ale to nie jest dostępne. Próbowałem również zobaczyć, jakie zmiany w elementach interfejsu użytkownika, gdy wykonuję gest powiększenia, pisząc Height i ActualHeight właściwości ScrollViewer scrollViewer i Image navigationImage do pliku dziennika, ale nie wykazują żadnych zmian.

Kiedy wykonuję gest powiększenia, chciałbym uzyskać wartość przybliżenia, tj. Aktualną wysokość i szerokość obrazu w stosunku do oryginalnej wysokości i szerokości.

Odpowiedzi:

5 dla odpowiedzi № 1

To nie ma nic wspólnego z Kinect SDK, jest to bardziej a ScrollViewer problem z powiększaniem. Nie ma k:KinectRegion.ZoomFactor ponieważ powiększenie nie zmienia rzeczywistego rozmiaru obrazu, wykonuje tylko niektóre przekształcenia układu, dlatego można uzyskać współczynnik powiększenia od LayoutTransform własność twojego Image.

Coś takiego jak poniższy kod powinno uzyskać współczynnik powiększenia:

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>