我使用下面的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变换来实现它。但是现在,我无法在画布上再应用缩放变换来调整画布(线条和多边形)的内容。
请帮我解决这个问题。提前谢谢。
答案 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>