本文整理汇总了C#中System.Windows.Rect.ToArray方法的典型用法代码示例。如果您正苦于以下问题:C# Rect.ToArray方法的具体用法?C# Rect.ToArray怎么用?C# Rect.ToArray使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Rect
的用法示例。
在下文中一共展示了Rect.ToArray方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetHighlights
// -----------------------------------------------------------------------
// KEY SAMPLE CODE ENDS HERE
// -----------------------------------------------------------------------
/// <summary>
/// This method parses the JSON ouput, and converts to a sequence of time frames with highlight region. A full video highlight is created if there is motion detected in the frame.
/// </summary>
/// <param name="json">JSON output of motion detection result.</param>
/// <returns>Sequence of time frames with highlight regions.</returns>
private static IEnumerable<FrameHighlight> GetHighlights(string json)
{
MotionDetectionResult motionDetectionResult = Helpers.FromJson<MotionDetectionResult>(json);
double timescale = motionDetectionResult.Timescale;
if (motionDetectionResult.Regions == null) yield break;
List<int> regionIds = motionDetectionResult.Regions.Select(x => x.Id).ToList();
Rect hasMotionRect = new Rect(new Point(0, 0), new Size(1, 1)); // Uses this full-frame rectangle to represent motion is detected in one frame
Rect noMotionRect = new Rect(new Point(0, 0), new Size(0, 0)); // Uses this empty rectangle to represent motion is not detected
foreach (Fragment<MotionEvent> fragment in motionDetectionResult.Fragments)
{
if (fragment.Events == null || fragment.Events.Length == 0)
{
// If 'Events' is empty, there isn't any motion detected in this fragment
Rect[] rects = new Rect[regionIds.Count];
for (int i = 0; i < rects.Length; i++) rects[i] = noMotionRect;
yield return new FrameHighlight() { Time = fragment.Start / timescale, HighlightRects = rects.ToArray() };
}
else
{
long interval = fragment.Interval.GetValueOrDefault();
for (int i = 0; i < fragment.Events.Length; i++)
{
double currentTime = (fragment.Start + interval*i)/timescale;
MotionEvent[] evts = fragment.Events[i];
Rect[] rects = regionIds.Select(id =>
{
MotionEvent evt = evts.FirstOrDefault(x => x.RegionId == id);
if (evt == null) return noMotionRect;
return hasMotionRect;
}).ToArray();
yield return new FrameHighlight() {Time = currentTime, HighlightRects = rects};
}
}
}
}