如何对网格单元格的不同子级使用变换来同步更改大小?

How to use transform for different children of a grid cell to change size synchronously?

一个网格单元格中有两个元素,当我对网格使用布局变换时,只有墨迹 canvas 被变换,而图像根本没有改变。当我使用缩放变换而不是布局时,它们都会改变,但问题是它会溢出滚动查看器。 C#:

private void editor_mouseWheel(Object sender , MouseWheelEventArgs e)
{
   Matrix m = grid.LayoutTransform.Value;
   if (e.Delta > 0)
      grid.ScaleAtPrepend(1.1,1.1,0,0);
   else
      grid.ScaleAtPrepend(1/1.1,1/1.1,0,0);
   grid.LayoutTransform = new MatrixTransform(m) ;
   grid.UpdateLayout();
}

和XAML:

<ScrollViewer>
 <Grid Name="grid" />
  <Image Name="img" RenderTransformOrigin="0,0" />
  <InkCanvas Name="editor" Background="Transparent" />
 </Grid>
</ScrollViewer>

LayoutTransform 确实会影响 Image 控件。但是,默认情况下,Image 控件会拉伸其图像以适合其边界。

您可以将 Stretch 属性 设置为 None:

<Grid Name="grid">
    <Image Name="img" Stretch="None" />
    <InkCanvas Name="editor" Background="Transparent" />
</Grid>