2

我有Canvas一个Rectangle

<Canvas>
   <Rettangle/>
</Canvas>

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

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


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

我能怎么做?

4

2 回答 2

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>
于 2012-06-23T15:19:49.647 回答
1

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

你如何在WPF中进行相对定位?

WPF:将宽度(和高度)设置为百分比值

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

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

于 2012-06-23T12:36:24.310 回答