WPF ViewBox Zoom

时间:2009-08-25 10:14:32

标签: c# wpf zoom viewbox

有没有办法缩放视图框内容,为一个控件激活? 我有一个带网格的视图框,在这个网格中我有一些控件,我试图缩放视图框中的所有控件,除了一个,是否可能?

非常感谢, 圣保罗

1 个答案:

答案 0 :(得分:5)

您可以使用网格向图层添加图层。这样,您可以缩放一组项目,并保持另一组不缩放。

<Grid>
  <Viewbox>
    <!-- Controls to zoom -->
  </Viewbox>
  <!-- Control to exclude from zoom -->
</Grid>

XAML中视图框和其他控件的顺序取决于最上面显示的图层。

如果那不是你想要的,请发表评论,我会重新回答。

编辑您希望unzoomed控件相对于Viewbox的(0,0)定位。在这种情况下会发生这种情况,因为网格的两个子节点都在单元格(0,0)中,这意味着它们的左上角是对齐的。你能举例说明你在XAML中有什么,以及它有什么问题(也许可以编辑原来的问题)?

这是一些尝试的XAML:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  Background="Green">
  <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
    <Viewbox>
      <Rectangle Fill="Yellow" Width="10" Height="10" />
    </Viewbox>
    <TextBlock>I am positioned at (0,0)</TextBlock>
    <TextBlock Margin="50,50">I am positioned at (50,50)</TextBlock>
  </Grid>
</Page>

这给出了这样的布局:

http://img20.imageshack.us/img20/2045/layout1m.png

但请注意,当高度降低时,网格会比视图框宽,因此内容的布局如下:

http://img20.imageshack.us/img20/9397/layout2i.png

我猜这不是你想要的。在这种情况下,您使用画布并执行以下操作:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  Background="Green">
  <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
    <Viewbox>
      <Rectangle Fill="Yellow" Width="10" Height="10" />
    </Viewbox>
    <Canvas>
      <TextBlock>I am positioned at (0,0)</TextBlock>
      <TextBlock Margin="50,50">I am positioned at (50,50)</TextBlock>
    </Canvas>
  </Grid>
</Page>

看起来像这样:

http://img20.imageshack.us/img20/6743/layout3i.png