更改 Canvas 内部矩形的比例尺寸。

3

我有一个带有矩形画布(Canvas):

<Canvas>
   <Rettangle/>
</Canvas>

当我调整画布大小时,我希望矩形保持相对位置不变,例如:

----------------------------------------
|                                      |
|                                      |
|           ____                       |
|          |    |                      |
|          |____|                      |
|                                      |
|--------------------------------------


--------------------
|                   |
|   ___             |
|   |__|            |
|                   |
|-------------------

我该怎么做?


你只是想让矩形的位置相对还是大小也要相对?从图片上看似乎两者都需要。 - akjoshi
@akjoshi,两个都是,大小也是。 - Nick
如果你在Canvas上应用一个ScaleTransform,我认为它会做到这一点。 - Tim S.
我的画布位于窗口内,当我调整窗口大小时,画布也会被调整大小,我没有应用任何变换。 - Nick
2个回答

5
为什么不把整个东西放在Viewbox中?
<Viewbox Stretch="Fill">
    <Canvas Width="400" Height="300">
        <Rectangle Canvas.Left="100" Canvas.Top="100" Width="100" Height="100" Fill="Blue"/>
    </Canvas>
</Viewbox>

为什么Canvas有特定的WidthHeight?我希望Canvas可以填满我的Window中所有可用的空间。 - Nick
那么,如果我的Windows被调整大小,我就必须动态更改Canvas的大小吗? - Nick
你可以给它任何你喜欢的宽度和高度。它只需要相对于包含的矩形有一个固定的大小。画布的大小、矩形的大小和位置必须有一定的预定义关系。你也可以设置Canvas.Width=1.0和Rectangle.Width=0.25。 - Clemens
这就是Viewbox的作用。只需尝试一下XAML示例即可。将Viewbox用作窗口中的顶级容器。 - Clemens

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接