在XAML中扩展

时间:2016-11-15 08:17:23

标签: c# wpf xaml canvas

我使用下面的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代码中使用了scale变换来实现它。但是现在,我无法在画布上再应用缩放变换来调整画布(线条和多边形)的内容。

请帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:2)

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