【发布时间】:2018-03-16 10:54:59
【问题描述】:
我有一些用 XAML 描述的形状,主要是曲线。其中一些在边缘周围有填充,通过将它们放置在大于形状的Canvas 中来实现。这个Canvas 充当边界框。
例如,此形状在 Designer 中显示如下。形状是曲线。外部方块是边界Canvas,用红色箭头表示。
<Canvas Height="160"
Width="160"
Background="Red">
<Path Stroke="#000000"
Data="M27.9,108 c0,0 25,-63 48.5,-51.5 s34.5,64.5 68.5,37">
</Path>
</Canvas>
现在我需要缩放Canvas 及其形状以动态适应更大的Canvas,同时保持形状的Geometry 相对于其边界Canvas,同时保持Stroke.Thickness。
这是形状在没有缩放的情况下的显示方式(边界Canvas 是红色,Canvas我需要缩放到是黄色):
这是它在缩放后需要如何处理的,但不更改 Stroke.Thickness。这里我使用的是ViewBox:
我忽略了这个问题是否有解决方案?
我怀疑唯一的解决方案是将形状的Path.Stretch 设置为Fill,更改其Height 和Width,然后将Margin 应用于边界Canvas 以复制填充,这听起来太可怕了。
【问题讨论】:
-
Path.Data 是一个 Geometry,它有一个 Transform 属性。
-
不要使用
Canvas代替Path.Margin。
标签: c# wpf xaml canvas scaling