XAML中的缩放

本文关键字:缩放 XAML | 更新日期: 2023-09-27 18:17:52

我使用下面的xaml代码将WPF画布的原点更改为屏幕中央。

<Canvas.RenderTransform>
    <TransformGroup>
        <ScaleTransform ScaleX="2" ScaleY="2"/>
        <TranslateTransform
            X="{Binding ActualWidth, RelativeSource={RelativeSource AncestorType=Canvas}}"
            Y="{Binding ActualHeight, RelativeSource={RelativeSource AncestorType=Canvas}}"/>
        <ScaleTransform ScaleX="0.5" ScaleY="0.5"/>
    </TransformGroup>
</Canvas.RenderTransform>

我在上面的xaml代码中使用缩放变换来实现这一点。但是现在,我无法在画布上应用缩放变换来调整画布内容(线条和多边形)的大小。

请帮我解决这个问题。

XAML中的缩放

设置Canvas坐标原点居中的更简单方法是将其放在2x2网格的右下角单元格中。因为Canvas的ClipToBounds属性的默认值是false,所以负坐标的元素仍然是可见的。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Canvas Grid.Column="1" Grid.Row="1">
        ...
    </Canvas>
</Grid>