本文整理汇总了C#中System.Windows.Media.PathFigure.EndPoint方法的典型用法代码示例。如果您正苦于以下问题:C# PathFigure.EndPoint方法的具体用法?C# PathFigure.EndPoint怎么用?C# PathFigure.EndPoint使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Media.PathFigure
的用法示例。
在下文中一共展示了PathFigure.EndPoint方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Smooth
private PathFigure Smooth(PathFigure pathFigure)
{
if (pathFigure.Segments.Count <= 1)
return pathFigure; // need at least 2 segments
// The path is closed if the last end point equal the start point
var startPoint = pathFigure.StartPoint;
var endPoint = pathFigure.EndPoint();
bool isClosed = (startPoint == endPoint);
if (isClosed && pathFigure.Segments.Count <= 2)
return pathFigure; // need at least 3 segments to get a closed polygon
var newPathFigure = new PathFigure
{
StartPoint = pathFigure.StartPoint,
//IsFilled = pathFigure.IsFilled, Not initialized by framework
IsFilled = IsFillSymbol,
IsClosed = pathFigure.IsClosed
};
int nbKnotPoints = isClosed ? pathFigure.Segments.Count : pathFigure.Segments.Count + 1;
var knotPoints = new System.Windows.Point[nbKnotPoints];
int index = 0;
knotPoints[index++] = startPoint;
foreach (var segment in pathFigure.Segments)
{
if (index < nbKnotPoints)
knotPoints[index++] = segment.EndPoint();
else
{
Debug.Assert(isClosed && index == nbKnotPoints); // should only happen for last segment when closed
}
}
System.Windows.Point[] firstControls;
System.Windows.Point[] secondControls;
if (isClosed)
ClosedBezierSpline.GetCurveControlPoints(knotPoints, out firstControls, out secondControls);
else
OpenBezierSpline.GetCurveControlPoints(knotPoints, out firstControls, out secondControls);
int nbSegment = firstControls.Length;
for (int i = 0; i < nbSegment; i++)
{
var point1 = firstControls[i];
var point2 = secondControls[i];
var point3 = (i + 1 >= nbKnotPoints ? knotPoints[0] : knotPoints[i + 1]); // Close the path if needed
var bezierSegment = new BezierSegment { Point1 = point1, Point2 = point2, Point3 = point3 };
newPathFigure.Segments.Add(bezierSegment);
}
return newPathFigure;
}
示例2: AddPatterns
private void AddPatterns(PathGeometry path, PathFigure pathFigure)
{
pathFigure.IsFilled = IsFillSymbol; // should be done by the framework ??
if (AtStart)
{
if (BySegment)
{
var point = pathFigure.StartPoint;
foreach (var segment in pathFigure.Segments)
{
if (segment.EndPoint() != point)
{
path.Concat(CreatePattern(point, segment.OrientationAtStart(point) + 180));
point = segment.EndPoint();
}
}
}
else
path.Concat(CreatePattern(pathFigure.StartPoint, pathFigure.OrientationAtStart() + 180));
}
if (AtEnd)
{
if (BySegment)
{
var point = pathFigure.StartPoint;
foreach (var segment in pathFigure.Segments)
{
if (segment.EndPoint() != point)
{
path.Concat(CreatePattern(segment.EndPoint(), segment.OrientationAtEnd(point)));
point = segment.EndPoint();
}
}
}
else
path.Concat(CreatePattern(pathFigure.EndPoint(), pathFigure.OrientationAtEnd()));
}
if (AtMiddle)
{
if (BySegment)
{
var point = pathFigure.StartPoint;
foreach (var segment in pathFigure.Segments)
{
path.Concat(CreatePattern(segment.MiddlePoint(point), segment.OrientationAtMiddle(point)));
point = segment.EndPoint();
}
}
else
path.Concat(CreatePattern(pathFigure.MiddlePoint(), pathFigure.OrientationAtMiddle()));
}
}