Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在WPF中制作多色虚线(对于多边形)_Wpf - Fatal编程技术网

如何在WPF中制作多色虚线(对于多边形)

如何在WPF中制作多色虚线(对于多边形),wpf,Wpf,我能够使用strokedashedaray属性在WPF中创建虚线多边形,即 Polygon maskingPolygon = new Polygon() maskingPolygon.Stroke = Brushes.White; maskingPolygon.StrokeDashArray = new DoubleCollection() {2,2}; 然而,我似乎无法制作一个通过几种不同颜色旋转的破折号图案。我想创建一个黑色和白色交替的破折号。我希望有这样的功能: Polygon mask

我能够使用strokedashedaray属性在WPF中创建虚线多边形,即

Polygon maskingPolygon = new Polygon()
maskingPolygon.Stroke = Brushes.White;
maskingPolygon.StrokeDashArray = new DoubleCollection() {2,2};
然而,我似乎无法制作一个通过几种不同颜色旋转的破折号图案。我想创建一个黑色和白色交替的破折号。我希望有这样的功能:

Polygon maskingPolygon = new Polygon()
maskingPolygon.StrokeDashArray = new Dictionary<int,Brush>();
maskingPolygon.StrokeDashArray.Add(2, White);
maskingPolygon.StrokeDashArray.Add(2, Black);
Polygon maskingPolygon=新多边形()
maskingPolygon.StrokeDashArray=新字典();
maskingPolygon.StrokeDashArray.Add(2,白色);
maskingPolygon.StrokeDashArray.Add(2,黑色);
我需要使用黑白相间的破折号,因为如果将多边形覆盖在任意照片上,则多边形需要可见

下面我用红色代替白色来说明我想要的效果


我能做的最简单的方法是从polygon类继承并从同一组点创建两个多边形,一个带破折号,另一个不带破折号。但那太笨拙了。

我认为你那粗鲁的方式并没有那么笨拙。WPF有助于通过组合现有控件来创建新控件。你担心什么?让我们称我的黑客多边形类DashedPolygon为DashedPolygon,继承自polygon。它将由一个简单的背景多边形(黑色笔划颜色)和另一个(白色)多边形组成。1) 我不确定将覆盖多边形放置在何处,以便在将DashedPolygon实例添加到画布时显示它。2) 将点添加到虚线多边形时,我如何侦听以将其添加到覆盖多边形?多边形在我的实例中会经常更改。为什么不简单地拥有两个多边形实例并将其
属性绑定到同一个点集合?