如何对网格单元格的不同子级使用变换来同步更改大小?
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>
一个网格单元格中有两个元素,当我对网格使用布局变换时,只有墨迹 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>