首页 > 解决方案 > 通过 Inkscape 创建一个只有一个路径的 SVG 文件并在我的 WPF 应用程序中使用它 - 路径不起作用

问题描述

我的目标是使用 James Willock 的解决方案为 WPF 应用程序创建自己的图标包(https://stackoverflow.com/a/43537432/10020261

他在代码中使用的两个示例运行良好。不幸的是,我不能从我的 SVG 文件中这么说。

原始文件来自 Flaticon ( https://www.flaticon.com/free-icon/gpu_1470120#term=gpu&page=1&position=2 )

使用 Inkscape,我打开了文件并合并了路径。这导致了我使用的路径。

MyPackIcon.cs

        private static IDictionary<MyPackIconKind, string> CreateIconData()
        {
            return new Dictionary<MyPackIconKind, string>
        {
            {MyPackIconKind.GPU, "M496,64V48c0-8.824-7.176-16-16-16H128c-8.824,0-16,7.176-16,16v16c-1.727,0-3.414,0.559-4.801,1.602L80,86V32 c0-1.574-0.473-3.129-1.344-4.441l-16-24C61.168,1.336,58.672,0,56,0H0v16h32v32H16v16h16v16H16C7.176,80,0,87.176,0,96v48 c0,8.824,7.176,16,16,16h16v16H16v16h16v16H16v16h16v16H16c-8.824,0-16,7.176-16,16v48c0,8.824,7.176,16,16,16h16v16H16v16h16v24 c0,4.414,3.586,8,8,8h16c2.672,0,5.168-1.336,6.656-3.559l16-24C79.528,355.121,80,353.574,80,352v-55.359l27,21.598 c1.426,1.145,3.184,1.762,5,1.762h16v16h-16v16h24c4.414,0,8-3.586,8-8v-24h32v16c0,8.824,7.176,16,16,16h16c8.824,0,16-7.176,16-16 v-16h16v16c0,8.824,7.176,16,16,16h128c8.824,0,16-7.176,16-16v-16h32v16c0,2.121,0.84,4.16,2.344,5.656l8,8 C443.84,351.16,445.871,352,448,352h32v-16h-28.688L448,332.688V320h48c8.824,0,16-7.176,16-16V80C512,71.176,504.824,64,496,64z  M32,304H16v-48h16V304z M32,144H16V96h16V144z M64,349.574L51.719,368H48V16h3.719L64,34.426V349.574z M128,48h352v16H128V48z  M192,336v-16h16l0.008,16H192z M496,136H378.664l-29.863-22.398C347.414,112.559,345.735,112,344,112h-56v16h53.336l29.863,22.398 c1.387,1.043,3.066,1.602,4.801,1.602h120v16h-80v16h80v16h-80v16h80v16H368c-2.129,0-4.16,0.84-5.656,2.344L340.688,256H288v16h56 c2.129,0,4.16-0.84,5.656-2.344L371.313,248H496v56H368v16h16v16H256v-16h96v-16H114.809L80,276.16V106l34.664-26H496V136z  M97.953,172.695c-0.555,2.695-0.938,5.434-1.258,8.191c-0.055,0.465-0.16,0.922-0.207,1.395C96.168,185.488,96,188.727,96,192 s0.168,6.512,0.496,9.727c0.047,0.473,0.152,0.922,0.207,1.395c0.32,2.75,0.703,5.496,1.258,8.191 c0.016,0.063,0.031,0.129,0.047,0.199c3.734,18.199,12.672,34.938,26.113,48.375c13.445,13.441,30.176,22.379,48.375,26.113 c0.063,0.016,0.129,0.031,0.199,0.047c2.695,0.555,5.434,0.938,8.191,1.258c0.465,0.055,0.922,0.16,1.395,0.207 c3.207,0.32,6.445,0.488,9.719,0.488s6.512-0.168,9.727-0.496c0.473-0.047,0.922-0.152,1.395-0.207 c2.75-0.32,5.496-0.703,8.191-1.258c0.063-0.016,0.129-0.031,0.199-0.047c18.199-3.734,34.938-12.672,48.375-26.113 c13.441-13.445,22.379-30.176,26.113-48.375c0.016-0.063,0.031-0.129,0.047-0.191c0.555-2.695,0.938-5.434,1.258-8.191 c0.055-0.465,0.16-0.922,0.207-1.395c0.32-3.215,0.488-6.453,0.488-9.727s-0.168-6.512-0.496-9.727 c-0.047-0.473-0.152-0.922-0.207-1.395c-0.32-2.75-0.703-5.496-1.258-8.191c-0.016-0.063-0.031-0.129-0.047-0.199 c-3.734-18.199-12.672-34.938-26.113-48.375c-13.445-13.441-30.176-22.379-48.375-26.113c-0.063-0.016-0.129-0.031-0.199-0.047 c-2.695-0.555-5.434-0.938-8.191-1.258c-0.465-0.055-0.922-0.16-1.395-0.207C198.512,96.168,195.274,96,192,96 s-6.512,0.168-9.727,0.496c-0.473,0.047-0.922,0.152-1.395,0.207c-2.75,0.32-5.496,0.703-8.191,1.258 c-0.063,0.016-0.129,0.031-0.199,0.047c-18.199,3.734-34.938,12.672-48.375,26.113c-13.441,13.445-22.379,30.176-26.113,48.375 C97.985,172.559,97.969,172.625,97.953,172.695z M183.992,271.602c-0.031-0.008-0.07-0.008-0.113-0.008 c-3.383-0.336-6.695-0.977-9.977-1.73c-1.078-0.246-2.141-0.527-3.199-0.824c-2.504-0.688-4.969-1.512-7.383-2.438 c-0.895-0.344-1.809-0.641-2.688-1.016c-2.777-1.188-5.465-2.578-8.098-4.082c-1.109-0.633-2.199-1.313-3.277-1.992 c-2.152-1.367-4.242-2.84-6.273-4.414c-0.52-0.41-1.074-0.77-1.586-1.188l28.531-28.527c1.941,1.289,4.008,2.344,6.125,3.266 c0.145,0.063,0.266,0.152,0.402,0.215c2.422,1.023,4.934,1.824,7.535,2.344V271.602z M241.008,255.09 c-2.023,1.582-4.121,3.055-6.266,4.422c-1.078,0.688-2.168,1.359-3.277,1.992c-2.633,1.496-5.32,2.895-8.098,4.082 c-0.879,0.375-1.793,0.672-2.688,1.016c-2.414,0.926-4.879,1.75-7.383,2.438c-1.066,0.297-2.129,0.578-3.199,0.824 c-3.281,0.754-6.594,1.395-9.977,1.73c-0.043,0.008-0.082,0-0.121,0.008v-40.402c2.594-0.527,5.113-1.328,7.535-2.344 c0.145-0.055,0.266-0.152,0.402-0.215c2.117-0.922,4.184-1.977,6.125-3.266l28.531,28.527 C242.078,254.32,241.528,254.68,241.008,255.09z M271.586,200.121c-0.34,3.383-0.969,6.703-1.73,9.984 c-0.246,1.063-0.527,2.117-0.816,3.168c-0.695,2.527-1.52,5.008-2.453,7.445c-0.328,0.855-0.609,1.738-0.969,2.578 c-1.191,2.801-2.602,5.512-4.113,8.168c-0.633,1.109-1.305,2.191-1.992,3.27c-1.367,2.152-2.84,4.25-4.422,6.273 c-0.41,0.52-0.77,1.07-1.188,1.586l-28.527-28.531c1.289-1.941,2.344-4.008,3.266-6.125c0.063-0.145,0.152-0.266,0.215-0.402 c1.023-2.422,1.824-4.934,2.344-7.535h40.395C271.594,200.039,271.594,200.078,271.586,200.121z M255.09,143 c1.582,2.023,3.055,4.121,4.422,6.273c0.68,1.078,1.352,2.16,1.992,3.27c1.512,2.648,2.922,5.352,4.113,8.16 c0.359,0.84,0.641,1.723,0.969,2.578c0.934,2.438,1.766,4.918,2.453,7.445c0.289,1.051,0.57,2.105,0.816,3.168 c0.762,3.281,1.391,6.602,1.738,9.992c0,0.043,0,0.082,0.008,0.121h-40.402c-0.527-2.594-1.328-5.113-2.344-7.535 c-0.055-0.145-0.152-0.266-0.215-0.402c-0.922-2.117-1.977-4.184-3.266-6.125l28.527-28.531 C254.321,141.93,254.68,142.48,255.09,143z M200,112.406h0.121c3.383,0.336,6.695,0.977,9.977,1.73 c1.078,0.246,2.141,0.527,3.199,0.824c2.504,0.688,4.969,1.512,7.383,2.438c0.895,0.344,1.809,0.641,2.688,1.016 c2.777,1.188,5.465,2.578,8.098,4.082c1.109,0.633,2.199,1.313,3.277,1.992c2.152,1.367,4.242,2.84,6.273,4.414 c0.52,0.41,1.074,0.77,1.586,1.188l-28.531,28.527c-1.941-1.289-4.008-2.344-6.125-3.266c-0.145-0.063-0.266-0.152-0.402-0.215 c-2.43-1.016-4.949-1.816-7.543-2.336V112.406z M187.207,168.48c1.547-0.313,3.152-0.48,4.793-0.48s3.246,0.168,4.801,0.488 c0.289,0.055,0.559,0.184,0.848,0.254c1.254,0.305,2.504,0.648,3.672,1.145c0.145,0.066,0.273,0.16,0.414,0.227 c5.402,2.414,9.746,6.75,12.16,12.16c0.066,0.141,0.16,0.27,0.227,0.414c0.496,1.168,0.832,2.418,1.145,3.672 c0.07,0.289,0.199,0.563,0.254,0.848c0.313,1.547,0.48,3.152,0.48,4.793s-0.168,3.246-0.488,4.801 c-0.063,0.297-0.191,0.566-0.266,0.863c-0.301,1.258-0.645,2.496-1.133,3.664c-0.059,0.137-0.152,0.258-0.211,0.391 c-2.414,5.434-6.781,9.801-12.223,12.211c-0.121,0.047-0.23,0.133-0.359,0.184c-1.176,0.496-2.426,0.84-3.688,1.145 c-0.289,0.07-0.555,0.191-0.84,0.254c-1.547,0.32-3.152,0.488-4.793,0.488s-3.246-0.168-4.801-0.488 c-0.297-0.055-0.559-0.184-0.848-0.254c-1.254-0.305-2.504-0.648-3.672-1.145c-0.121-0.051-0.215-0.129-0.336-0.176 c-5.473-2.418-9.863-6.809-12.281-12.281c-0.047-0.113-0.125-0.215-0.176-0.336c-0.496-1.168-0.84-2.418-1.145-3.672 c-0.07-0.289-0.199-0.559-0.254-0.848c-0.32-1.555-0.488-3.16-0.488-4.801s0.168-3.246,0.488-4.801 c0.055-0.289,0.184-0.551,0.254-0.84c0.305-1.262,0.648-2.512,1.145-3.688c0.059-0.129,0.137-0.238,0.191-0.359 c2.418-5.441,6.777-9.809,12.211-12.223c0.137-0.066,0.254-0.152,0.391-0.211c1.168-0.496,2.41-0.832,3.664-1.137 C186.641,168.672,186.91,168.543,187.207,168.48z M142.992,128.91c2.023-1.582,4.121-3.055,6.266-4.422 c1.078-0.688,2.168-1.359,3.277-1.992c2.633-1.496,5.32-2.895,8.098-4.082c0.879-0.375,1.793-0.672,2.688-1.016 c2.414-0.926,4.879-1.75,7.383-2.438c1.066-0.297,2.129-0.578,3.199-0.824c3.281-0.754,6.594-1.395,9.977-1.73 c0.043-0.008,0.082,0,0.121-0.008v40.402c-2.594,0.527-5.113,1.328-7.535,2.344c-0.145,0.055-0.266,0.152-0.402,0.215 c-2.117,0.922-4.184,1.977-6.125,3.266l-28.531-28.527C141.922,129.68,142.473,129.32,142.992,128.91z M112.414,183.879 c0.34-3.383,0.969-6.695,1.73-9.969c0.246-1.078,0.527-2.141,0.824-3.199c0.688-2.504,1.512-4.969,2.438-7.383 c0.348-0.895,0.641-1.809,1.02-2.688c1.184-2.777,2.574-5.465,4.078-8.098c0.633-1.109,1.313-2.199,1.992-3.277 c1.367-2.152,2.84-4.242,4.414-6.273c0.41-0.52,0.77-1.07,1.188-1.586l28.527,28.531c-1.289,1.941-2.344,4.008-3.266,6.125 c-0.063,0.145-0.152,0.266-0.215,0.402c-1.023,2.422-1.824,4.941-2.344,7.535h-40.395 C112.406,183.961,112.406,183.922,112.414,183.879z M152.801,200c0.527,2.594,1.328,5.113,2.344,7.535 c0.055,0.145,0.152,0.266,0.215,0.402c0.922,2.117,1.977,4.184,3.266,6.125l-28.527,28.531c-0.418-0.516-0.777-1.066-1.188-1.586 c-1.582-2.023-3.047-4.121-4.414-6.273c-0.688-1.078-1.359-2.168-1.992-3.277c-1.504-2.625-2.895-5.313-4.09-8.09 c-0.375-0.879-0.672-1.793-1.016-2.688c-0.926-2.414-1.75-4.879-2.438-7.383c-0.297-1.066-0.578-2.129-0.824-3.199 c-0.754-3.281-1.395-6.594-1.73-9.977c-0.008-0.043,0-0.082-0.008-0.121H152.801z M362.664,168H400v16h-40 c-1.734,0-3.414-0.559-4.801-1.602L325.336,160H288v-16h40c1.734,0,3.414,0.559,4.801,1.602L362.664,168z M355.199,201.602 L325.336,224H288v16h40c1.734,0,3.414-0.559,4.801-1.602L362.664,216H400v-16h-40C358.266,200,356.586,200.559,355.199,201.602z  M336,184h-32v16h32V184z M464,96v16h16V96H464z M464,288h16v-16h-16V288z " },
            {MyPackIconKind.Happy, "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8C16.3,8 17,8.7 17,9.5M12,17.23C10.25,17.23 8.71,16.5 7.81,15.42L9.23,14C9.68,14.72 10.75,15.23 12,15.23C13.25,15.23 14.32,14.72 14.77,14L16.19,15.42C15.29,16.5 13.75,17.23 12,17.23Z"},
            {MyPackIconKind.Sad, "M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z"},
        };
        }

这是我的 MainWindow.xaml

    <Grid Background="Gray">
        <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
            <icons:MyPackIcon Kind="GPU" Foreground="White" Height="50" Width="50" Margin="100 0 0 0"/>
            <icons:MyPackIcon Kind="Happy" Foreground="White" Height="50" Width="50"/>
            <icons:MyPackIcon Kind="Sad" Foreground="White" Height="50" Width="50"/>
        </StackPanel>
    </Grid>

示例路径以正确的大小显示。我的 SVG 的路径不注意我指出的高度或宽度。这是我的问题,我不知道我的 GPU SVG 做错了什么

https://imgur.com/a/virBucD

标签: c#wpfsvg

解决方案


我可能会制作那些几何图形而不是字符串。

如果您只是将路径的数据设置为几何图形,那么您将获得由几何坐标定义的原始大小。

为避免这种情况,请将路径的拉伸属性设置为填充或均匀。

如果您不设置大小,它将填充它所在的任何容器。

不需要视图框或画布。

我通常做这种事情的方式是在资源字典中定义一些几何图形。显然,给每个 x:key。并使用一个作为静态资源设置路径的数据。


推荐阅读