在Canvas中更改Rectangle的比例

时间:2012-06-23 11:53:39

标签: c# wpf xaml wpf-controls shape

我有Canvas Rectangle

<Canvas>
   <Rettangle/>
</Canvas>

我想要的是,当我调整我的Canvas大小时,Rectangle保持相同的相对位置,例如:

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


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

我该怎么办?

2 个答案:

答案 0 :(得分:4)

为什么不将所有内容放在Viewbox

<Viewbox Stretch="Fill">
    <Canvas Width="400" Height="300">
        <Rectangle Canvas.Left="100" Canvas.Top="100" Width="100" Height="100" Fill="Blue"/>
    </Canvas>
</Viewbox>

答案 1 :(得分:1)

最好的解决方案是创建自己的自定义画布,并使用这些问题中提到的一些技术实现重新调整大小和重新定位 -

How do you do relative positioning in WPF?

WPF: Setting the Width (and Height) as a Percentage Value

但对我来说,这个功能与缩放非常相似;如果您的窗口只有Canvas,您可以尝试使用来自Kael Rowan的ZoomableCanvas,并在窗口重新调整大小时显式放大/缩小:

http://blogs.msdn.com/b/kaelr/archive/2010/07/29/zoomablecanvas.aspx