Exemple #1
0
 private void SetDifference()
 {
     if (m_options.resultsOptions.HighlightDifference)
     {
         if (_thread != null && _thread.ThreadState == System.Threading.ThreadState.Running)
         {
             HighlightCompleteEvent -= new HighlightCompleteDelegate(HighlightCompleteEventHandler);
             _highlightStop          = true;
             _thread.Join();
         }
         HighlightCompleteEvent += new HighlightCompleteDelegate(HighlightCompleteEventHandler);
         _highlightStop          = false;
         ComparableBitmap[] bitmap1 = m_firstImagePreviewPanel.GetImageFragments();
         ComparableBitmap[] bitmap2 = m_secondImagePreviewPanel.GetImageFragments();
         _thread = new Thread(
             unused => CalculateRectanglesOfDifferences(bitmap1, bitmap2));
         _thread.Name = "Calculate rectangles of differences";
         _thread.Start();
     }
     else
     {
         m_firstImagePreviewPanel.ClearDifference();
         m_secondImagePreviewPanel.ClearDifference();
     }
 }
Exemple #2
0
        private void HighlightCompleteEventHandler(List <Rectangle> rectangles)
        {
            if (InvokeRequired) // Проверяем в этом ли потоке нахождится созданый обьект
            {
                object[] eventArgs = { rectangles };
                Invoke(new HighlightCompleteDelegate(HighlightCompleteEventHandler), eventArgs);
                return;
            }

            if (rectangles != null && rectangles.Count > 0)
            {
                m_firstImagePreviewPanel.SetDifference(rectangles);
                m_secondImagePreviewPanel.SetDifference(rectangles);
            }

            HighlightCompleteEvent -= new HighlightCompleteDelegate(HighlightCompleteEventHandler);
        }