c# - 如何在 Canvas 比例尺内制作多个 Path 元素以适合其父级?

标签 c# windows canvas path windows-store-apps

我在 Illustrator 中创建了一系列形状,并将它们导出到 .ai 文件中。当我在 Blend for Visual Studio 中导入此文件时,我得到如下所示的内容:

<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>

路径有很多,为简洁起见,我不会在这里一一列举。放在一起时,它们会形成一个固定大小的矩形。我想在我的应用程序顶部使用这个矩形作为标题图像。我可以在 Blend 中调整 Canvas 元素的大小,但我无法获得适合 Canvas 的集体路径,并随之调整大小。由于我正在为各种尺寸的屏幕进行设计,因此我希望标题图像能够缩放。我试过将它嵌套在网格中,但这不起作用。

看起来在 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 属性可以控制它是均匀拉伸(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>

关于c# - 如何在 Canvas 比例尺内制作多个 Path 元素以适合其父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27938047/

相关文章:

c# - 使用默认值的通用解析

c# - 如何使用 API 和 C# 向 telegram 发送消息?

c++ - libssh - 多次发送请求并从 channel 读取答案

c# - 使用 HttpWebRequest.GetResponse() 抓取屏幕时出现错误 "The remote server returned an error: (403) Forbidden"

c# - exe安装抛出错误该模块预计包含程序集 list .Net Core

java - 无法在 Windows 中更改 Java 版本

mysql - 如何为 XtraBackup 连接到 windows mysql 服务器

javascript - 更新 Canvas 输入类型文件 jCanvas 中的图像

javascript - Canvas 中的动画不起作用

javascript - 在 Fabric.js 中更改文本字体