我正在使用带有ImageBrush
的画布来显示图像。我将画布的大小设置为图像的原始大小,以便在移动鼠标等时获取坐标。
问题在于,当我将画布放在一个较小尺寸的控件(例如Grid
)中时,Canvas
会被剪裁。
<Grid>
<Canvas Width="{Binding ImageWidth}" Height="{Binding ImageHeight}" >
<Canvas.Background>
<ImageBrush ImageSource="{Binding Image, Converter={StaticResource imgConverter}}"/>
</Canvas.Background>
</Canvas>
</Grid>
有没有办法保持画布大小而不被剪裁?
答案 0 :(得分:1)
我已经意识到要深入挖掘信息源以找出剪辑发生一段时间的地方,但是从来没有开始这样做。当这种情况发生时,我一直在使用一个不太好的把Grid
插入可视树的技巧。
有许多控件夹住儿童视觉效果; StackPanel
,Canvas
等。正如我所提到的,通常的快速解决方法是在导致剪辑的容器后使用<StackPanel>
<Grid>
<Canvas Width="{Binding ImageWidth}" Height="{Binding ImageHeight}" >
<Canvas.Background>
<ImageBrush ImageSource="{Binding Image, Converter={StaticResource imgConverter}}"/>
</Canvas.Background>
</Canvas>
</Grid>
</StackPanel>
。
在您的代码段中,视觉树上方是否有更多容器?
如果深度实际上是这样的: -
Canvas
然后这可能会导致裁剪。如果您在可视树中向上插入另一个<StackPanel>
<Canvas>
<Grid>
<Canvas Width="{Binding ImageWidth}" Height="{Binding ImageHeight}" >
<Canvas.Background>
<ImageBrush ImageSource="{Binding Image, Converter={StaticResource imgConverter}}"/>
</Canvas.Background>
</Canvas>
</Grid>
</Canvas>
</StackPanel>
,则会删除此剪辑。
DateTimePicker
如果这种解决方法改变了其他控件的其他布局需求,则可能会出现问题。