提出问题 快速访问 搜索相关主题
我有以下xaml代码:
<Grid Name="navigationGrid" Grid.RowSpan="2">
<ScrollViewer Name="scrollViewer" Grid.Row="0"
HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"
k:KinectRegion.IsHorizontalRailEnabled="true"
k:KinectRegion.IsVerticalRailEnabled="true"
k:KinectRegion.ZoomMode="Enabled" LayoutUpdated="scrollViewer_LayoutUpdated" >
<Image Name="navigationImage" RenderTransformOrigin="0.5, 0.5"/>
</ScrollViewer>
</Grid>
现在我想手动更改图像的缩放,即假设为缩放值Z,所以我执行以下操作:
System.Windows.Media.Matrix m = navigationImage.LayoutTransform.Value;
m.ScaleAtPrepend(Z / m.M11), Z / m.M11, m.M21, m.M22); //Z is the zoom value
navigationImage.LayoutTransform = new System.Windows.Media.MatrixTransform(m);
但是在对图像执行layoutTransform之后,我现在无法使用kinect缩放手势。我想这是由于分配了新的LayoutTransform。
所以而不是
new System.Windows.Media.MatrixTransform(m);
我想要像
这样的东西 navigationImage.LayoutTransform.SetValue(ScaleTransform.ScaleXProperty, Z / m.M11);
但是这给了我一个错误&#34;无法在对象上设置属性&#39; Identity&#39;因为它处于只读状态。&#34;所以我的问题是如何为layoutTransform设置新值。
答案 0 :(得分:0)
将“缩放变换”设置为“布局变换”,然后更新“缩放变换”。
var scale = new ScaleTransform();
navigationImage.LayoutTransform = scale;
// Elsewhere...
scale.ScaleX = newValue;