Пример #1
0
        public async Task NextFrame()
        {
            // PrevInteractedElement = InteractedElement;
            const int elmtsToTriggerCleanup = 100;
            const int elmtsToCleanup        = 50;

            var undrawnElements = ImElements.Values.Where(elmt => elmt.ImState == ImElement.State.NotDrawn)
                                  .Take(elmtsToTriggerCleanup).ToList();

            if (undrawnElements.Count == elmtsToTriggerCleanup)
            {
                foreach (var elmt in undrawnElements.Take(elmtsToCleanup))
                {
                    elmt.Unsubber(elmt.WpfElement, elmt.Handler);
                    ImElements.Remove(elmt.ID);
                }
            }

            InteractedElementId = null;
            WpfElement[] sortedWpfElements = ImElements.Values.Where(x => x.ImState == ImElement.State.Drawn)
                                             .OrderBy(c => c.SortKey).Select(c => c.WpfElement).ToArray();
            var wpfElementsChanged = DisplayedElements.Count != sortedWpfElements.Length ||
                                     !Enumerable.Zip(
                DisplayedElements.OfType <WpfElement>(),
                sortedWpfElements,
                (c1, c2) => c1 == c2).All(b => b);

            if (wpfElementsChanged)
            {
                DisplayedElements.Clear();
                foreach (var item in sortedWpfElements)
                {
                    DisplayedElements.Add(item);
                }
            }

            // Automatically go to next frame for each requested redraw
            if (RemainingRedraws <= 0)
            {
                RemainingRedraws = 0;
                await TCS.Task;
                TCS = new TaskCompletionSource <bool>();
            }
            else
            {
                RemainingRedraws--;
            }

            foreach (var elmt in ImElements.Values)
            {
                elmt.ImState = ImElement.State.NotDrawn;
                elmt.SortKey = 999999;
            }
        }
Пример #2
0
    private static void ClearFixedHostPanelHelper( DataGridControl dataGrid, UIElementCollection collection )
    {
      TableViewScrollViewer tableViewScrollViewer = dataGrid.ScrollViewer as TableViewScrollViewer;
      RowSelectorPane rowSelectorPane = ( tableViewScrollViewer != null ) ? tableViewScrollViewer.RowSelectorPane : null;

      foreach( DependencyObject headerFooterItem in collection )
      {
        if( rowSelectorPane != null )
        {
          rowSelectorPane.FreeRowSelector( headerFooterItem );
        }

        dataGrid.ClearItemContainer( headerFooterItem, GetFixedItem( headerFooterItem ) );
        DataGridControl.SetDataGridContext( headerFooterItem, null );
      }

      collection.Clear();
    }
 public void drawPose(UIElementCollection _children, coord[] _pose, Color _color)
 {
     _children.Clear();
     _children.Add(getImage(_pose, _color));
 }