当前位置: 首页>>代码示例>>C#>>正文


C# Rect.ToArray方法代码示例

本文整理汇总了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};
                    }
                }
            }
        }
开发者ID:CaesarIdes,项目名称:ProjectOxford-ClientSDK,代码行数:54,代码来源:MotionDetectionPage.xaml.cs


注:本文中的System.Windows.Rect.ToArray方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。