Rob*_*ech 0 wpf canvas wpf-controls
伙计我使用画布作为ItemsPanelTemplate并将其绑定到包含典型行起点和终点的行列表
<ItemsControl ItemsSource="{Binding Path = LineList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
现在.我想将中心点移动到画布的中间而不是左上角.我面前的选项很少
我知道如何通过第一种方法来做到这一点,但是当我尝试通过第二种方法时,它并没有改变坐标系.这是为什么?我刚刚在我的代码中替换了答案,如下所示.我错过了什么吗?
****更新****:以下代码正常工作
<ItemsControl ItemsSource="{Binding Path = LineList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas>
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="1" ScaleY="-1" CenterX=".5" CenterY=".5" />
</Canvas.LayoutTransform>
</Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
示例中的ScaleTransform 的CenterX和CenterY属性实际上并不移动Canvas.此外,LayoutTransform无论如何都会忽略翻译(请参阅此处的备注).你可以使用适合RenderTransformCanvas的:
<ItemsPanelTemplate>
<Canvas>
<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>
</Canvas>
</ItemsPanelTemplate>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2196 次 |
| 最近记录: |