如何在 Canvas 比例尺内制作多个路径元素以适应其 parent?
How can I make multiple Path elements inside a Canvas scale to fit its parent?
我在 Illustrator 中创建了一系列形状,并将它们导出到 .ai 文件中。当我在 Visual Studio 的 Blend 中导入此文件时,我得到如下所示的内容:
<Canvas x:Name="ManyPaths" Grid.Row="0">
<Path Data="F1M0,53.135L0.004,102.44 22.03,151.59 55.042,0z" Fill="#FF8B1A34" Height="151.59" Canvas.Left="0.017" Stretch="None" Canvas.Top="182.406" Width="55.042"/>
<Path Data="F1M0.003,34.152L22.027,49.15 0,0z" Fill="#FF991937" Height="49.15" Canvas.Left="0.02" Stretch="None" Canvas.Top="284.846" Width="22.027"/>
</Canvas>
路径有很多,为简洁起见,我不会在这里一一列举。放在一起时,它们会形成一个固定大小的矩形。我想在我的应用程序顶部使用这个矩形作为 header 图像。我可以在 Blend 中调整 Canvas 元素的大小,但我无法获得适合 Canvas 的集体路径,也无法随之调整大小。由于我正在为各种尺寸的屏幕设计,所以我希望 header 图像可以缩放。我试过将它嵌套在网格中,但那不起作用。
看起来在 C# 中执行路径的传统方法是
<Path Grid.Row="1" Stroke="Black" StrokeThickness="2" Fill="Green">
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure StartPoint="100,100">
<QuadraticBezierSegment Point1="165,25" Point2="225,100" />
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
我不确定是否有办法将第一种格式转换为第二种格式,但我想尽可能重复使用我的 .ai 文件,而不是从头开始重新创建它们。
无需转换为第二种格式。使用数据属性更简洁,通常更清晰。
您可以将您的 Canvas 包装在 ViewBox 中,让它扩展到其容器。 Stretch 属性可以控制它是均匀拉伸还是扭曲(你可能想要均匀的)
<Viewbox Stretch="Uniform" Grid.Row="0">
<Grid x:Name="ManyPaths" >
<Path Data="F1M0,53.135L0.004,102.44 22.03,151.59 55.042,0z" Fill="#FF8B1A34" Height="151.59" Canvas.Left="0.017" Stretch="None" Canvas.Top="182.406" Width="55.042"/>
<Path Data="F1M0.003,34.152L22.027,49.15 0,0z" Fill="#FF991937" Height="49.15" Canvas.Left="0.02" Stretch="None" Canvas.Top="284.846" Width="22.027"/>
</Grid>
</Viewbox>
我在 Illustrator 中创建了一系列形状,并将它们导出到 .ai 文件中。当我在 Visual Studio 的 Blend 中导入此文件时,我得到如下所示的内容:
<Canvas x:Name="ManyPaths" Grid.Row="0">
<Path Data="F1M0,53.135L0.004,102.44 22.03,151.59 55.042,0z" Fill="#FF8B1A34" Height="151.59" Canvas.Left="0.017" Stretch="None" Canvas.Top="182.406" Width="55.042"/>
<Path Data="F1M0.003,34.152L22.027,49.15 0,0z" Fill="#FF991937" Height="49.15" Canvas.Left="0.02" Stretch="None" Canvas.Top="284.846" Width="22.027"/>
</Canvas>
路径有很多,为简洁起见,我不会在这里一一列举。放在一起时,它们会形成一个固定大小的矩形。我想在我的应用程序顶部使用这个矩形作为 header 图像。我可以在 Blend 中调整 Canvas 元素的大小,但我无法获得适合 Canvas 的集体路径,也无法随之调整大小。由于我正在为各种尺寸的屏幕设计,所以我希望 header 图像可以缩放。我试过将它嵌套在网格中,但那不起作用。
看起来在 C# 中执行路径的传统方法是
<Path Grid.Row="1" Stroke="Black" StrokeThickness="2" Fill="Green">
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigure StartPoint="100,100">
<QuadraticBezierSegment Point1="165,25" Point2="225,100" />
</PathFigure>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
我不确定是否有办法将第一种格式转换为第二种格式,但我想尽可能重复使用我的 .ai 文件,而不是从头开始重新创建它们。
无需转换为第二种格式。使用数据属性更简洁,通常更清晰。
您可以将您的 Canvas 包装在 ViewBox 中,让它扩展到其容器。 Stretch 属性可以控制它是均匀拉伸还是扭曲(你可能想要均匀的)
<Viewbox Stretch="Uniform" Grid.Row="0">
<Grid x:Name="ManyPaths" >
<Path Data="F1M0,53.135L0.004,102.44 22.03,151.59 55.042,0z" Fill="#FF8B1A34" Height="151.59" Canvas.Left="0.017" Stretch="None" Canvas.Top="182.406" Width="55.042"/>
<Path Data="F1M0.003,34.152L22.027,49.15 0,0z" Fill="#FF991937" Height="49.15" Canvas.Left="0.02" Stretch="None" Canvas.Top="284.846" Width="22.027"/>
</Grid>
</Viewbox>