首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PathGeometry类

如何使用PathGeometry类
EN

Stack Overflow用户
提问于 2013-07-03 07:37:55
回答 1查看 1.8K关注 0票数 1

我使用的是ModernUI,有一种叫做“现代按钮”的东西,基本上就是按钮,但有不同的皮肤。特殊的特征是按钮中的图像的绘制方式:它使用PathGeometry。这个几何图形可以在this站点上找到。我需要的是以编程方式更改PathGeometry的代码隐藏。我知道如何在XAML中这样做,例如:

代码语言:javascript
复制
 IconData="F1 M 19.0002,34L 19.0002,42L 43.7502,42L 33.7502,52L 44.2502,52L 58.2502,38L 44.2502,24L 33.7502,24L 43.7502,34L 19.0002,34 Z " />

那根棍子代表一支箭。

但是我不能做同样的代码隐藏,我想我需要一些转换。在ModernUI的源代码中,我发现了这段代码,其中放置了一堆引用的按钮。这对我来说也是一个很好的选择。

代码语言:javascript
复制
 public ControlsModernButton()
    {
        InitializeComponent();

        // find all embedded XAML icon files
        var assembly = GetType().Assembly;
        var iconResourceNames = from name in assembly.GetManifestResourceNames()
                                where name.StartsWith("FirstFloor.ModernUI.App.Assets.appbar.")
                                select name;


        foreach (var name in iconResourceNames) 
        {
            // load the resource stream
            using (var stream = assembly.GetManifestResourceStream(name))
            {
                // parse the icon data using xml
                var doc = XDocument.Load(stream);

                var path = doc.Root.Element("{http://schemas.microsoft.com/winfx/2006/xaml/presentation}Path");
                if (path != null) {
                    var data = (string)path.Attribute("Data");

                    // create a modern button and add it to the button panel
                    ButtonPanel.Children.Add(new ModernButton {
                        IconData = PathGeometry.Parse(data),
                        Margin = new Thickness(0, 0, 4, 8)
                    });
                }
            }
        }
    }

我的例子的不同之处在于,我不想创建一个新按钮,而是想更改它的IconData属性。

这些文件(包含几何图形的文件)内部有这样的结构:

代码语言:javascript
复制
    <?xml version="1.0" encoding="utf-8"?>
<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Name="appbar_add" Width="76" Height="76" Clip="F1 M 0,0L 76,0L 76,76L 0,76L 0,0">
    <Path Width="38" Height="38" Canvas.Left="19" Canvas.Top="19" Stretch="Fill" Fill="#FF000000" Data="F1 M 35,19L 41,19L 41,35L 57,35L 57,41L 41,41L 41,57L 35,57L 35,41L 19,41L 19,35L 35,35L 35,19 Z "/>
</Canvas>

我认为最好的选择是能够从.png文件中设置IconData属性,但我不知道如何在代码中这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-03 07:52:18

我找到了!在我的例子中,代码是:

代码语言:javascript
复制
                  var streamGeometry = StreamGeometry.Parse("F1 M 35,19L 41,19L 41,35L 57,35L 57,41L 41,41L 41,57L 35,57L 35,41L 19,41L 19,35L 35,35L 35,19 Z ");
                    sortButton.IconData = streamGeometry;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17437502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档