如何在WPF中创建自定义形状的按钮?

时间:2019-03-08 16:13:45

标签: c# wpf inkscape

(在将其标记为重复之前,我想说我已经尝试了其他帖子的答案,但它们似乎不适用于我的特定问题。)

我正在创建一种“地图游戏”,其中的地图分为多个区域。目前,这就是我所拥有的:

它可以工作,但是不是很漂亮。我想使按钮(当前是Rectangle控件,但我可以轻松更改)的形状正确。

我尝试在Inkscape中创建路径,这给了我SVG路径:

m 283.60033,267.22114 11.61675,32.57742 14.14214,-8.33376 10.35406,-1.01015 11.61676,-5.3033 10.6066,-5.05077 0,-16.66751 -34.85027,-3.78808 -8.08122,2.77792 -14.64721,0.75762 z

但是,当我尝试使Button(以及后来的Polygon)使用该路径时,它没有用,而是变成了完全不同的形状。

按钮需要具有可以在运行时更改的背景颜色,因此PictureBox将无法工作。

路径不起作用是有原因的吗?还是有更简单的方法?

编辑:这是我用于多边形的代码

<Polygon Fill="Blue" Points="283.60033,267.22114 11.61675,32.57742 14.14214,-8.33376 10.35406,-1.01015 11.61676,-5.3033 10.6066,-5.05077 0,-16.66751 -34.85027,-3.78808 -8.08122,2.77792 -14.64721,0.75762" Margin="248,102,956,22" RenderTransformOrigin="0.5,0.5" Grid.ColumnSpan="2"/>

这是结果,它与我尝试更改Button的形状时得到的形状相同(不幸的是,我删除了该代码):

enter image description here

这是它的外观(在Inkscape中绘制的路径):

enter image description here

2 个答案:

答案 0 :(得分:1)

我想通了,实际上很简单!实际上,我根本不需要Inkscape。

我将地图图像导入到Blend中,并使用钢笔工具跟踪了该区域并将其创建为路径,然后将其复制回Visual Studio。

示例:

enter image description here

答案 1 :(得分:0)

您确定没有与挑选出产生的xaml inkscape的哪个部分混淆吗?

因为那大约是伊比利亚半岛的右上角。就像您绘制的地图一样。大致来说。那只是一个多边形-具有坚硬的边缘。意味着无论您制作了什么,都没有找到显示给我们的内容的弯曲/粗糙边缘。

也。 如果您查看其中的数据。 看看它从哪里开始?

 m 283.60033,267.22114

那是x,y坐标。

向左268px,向下267px

从您放入的任何容器的左上角开始。 那对你有用吗?