1: public void DrawFaceFlat(DrawingContext drawingContext)
2: {
3: if (!LastFaceTrackSucceeded || _skeletonTrackingState != SkeletonTrackingState.Tracked)
4: {
5: _startFaceRecognition = DateTime.MinValue;
6: return;
7: }
8:
9: var faceModelPts = _facePoints.Select(t => new Point(t.X + 0.5f, t.Y + 0.5f)).ToList();
10:
11: var faceModelGroup = new GeometryGroup();
12: for (var i = 0; i < faceModelPts.Count; i++)
13: {
14: var geometryGroup = new GeometryGroup();
15: var ellipseGeometry = new EllipseGeometry(faceModelPts[i], 1, 1);
16:
17: var formattedText = new FormattedText(i.ToString(), CultureInfo.InvariantCulture, FlowDirection.LeftToRight,
18: new Typeface("Verdana"), 12, Brushes.White);
19: geometryGroup.Children.Add(ellipseGeometry);
20: faceModelGroup.Children.Add(geometryGroup);
21: }
22:
23: drawingContext.DrawGeometry(Brushes.Yellow, new Pen(Brushes.Yellow, 1.0), faceModelGroup);
24:
25: for (var i = 0; i < faceModelPts.Count; i++)
26: {
27: var formattedText = new FormattedText(i.ToString(), CultureInfo.InvariantCulture, FlowDirection.LeftToRight, new Typeface("Verdana"), 8, Brushes.White);
28: drawingContext.DrawText(formattedText, faceModelPts[i]);
29: }
30:
31: if (_startFaceRecognition == DateTime.MinValue)
32: {
33: _startFaceRecognition = DateTime.Now;
34: }
35: else
36: {
37: if (DateTime.Now.Subtract(_startFaceRecognition).TotalSeconds > 5)
38: {
39: Application.Current.Dispatcher.BeginInvoke(new Action(() =>
40: {
41: System.Threading.Thread.Sleep(300);
42: _startFaceRecognition = DateTime.MinValue;
43: }));
44: }
45: }
46: }