如何在wpf中获取画布内容大小?

时间:2015-03-30 14:06:34

标签: c# wpf canvas

我有以下画布:

<Canvas Width="800" Height="600">
    <Rectangle Fill="#FF333333" Height="124" Width="500" 
               Canvas.Bottom="0" />
    <Rectangle Fill="#FF333333" Height="124" Width="500"
               Canvas.Bottom="150" Canvas.Left="150"/>
    <Rectangle Fill="#FF333333" Height="124" Width="500" 
               Canvas.Bottom="300"/>
</Canvas>

我想获得矩形组占据的矩形空间的大小(宽度和高度)。 在上面的例子中,我期待这些值:

ContentWidth = 650 (= 500 + 150)
ContentHeight = 424 (= 300 + 124)

ActualWidth和ActualHeight分别返回800和600,这不是我想要的。 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我担心你想要的,需要手动计算。问题是Canvas是一个没有DesiredHeightDesiredWidth的面板,这意味着它不会计算子项的宽度/高度来建议所需的大小它

你可以像:Rachel所说的那样计算它,或者你可以创建一个具有所需矩形属性的新面板(像CustomCanvas这样的东西)。

希望这些提示有帮助...