如何同步两个PaintEventArgs?

时间:2019-03-14 10:54:39

标签: c#

我有一个包含图片框的表单(其中绘制了一个位图,该位图通过“ pictureBox1.Invalidate”进行了更新) 在Form的内部(在右下角)绘制了一个圆圈,该圆圈的开头为红色,并根据逻辑变为绿色(“ this.Invalidate()”)。 如果我评论pictureBox1.Invalidate并保留this.Invalidate(),LED将根据需要更改颜色,但不会更新图片框内的位图(显然反之亦然) 我想同时更新两者。 我该怎么办??

    // THIS METHOD ALLOWS YOU TO DRAW A BITMAP INSIDE A PICTUREBOX THAT IS LOCATED WITHIN A FORM
 private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
            try
            {
                Nuitrack.Update(_skeletonTracker);
            }
            catch (LicenseNotAcquiredException exception)
            {
                Console.WriteLine("LicenseNotAcquired exception. Exception: ", exception);
                throw exception;
            }
            catch (Exception exception)
            {
                Console.WriteLine("Nuitrack update failed. Exception: ", exception);
            }

            //Draw bitmap
            e.Graphics.DrawImage(_bitmap.Bitmap, new Point(0, 0));

            pictureBox1.Invalidate();
        }

// THIS METHOD ALLOWS YOU TO DRAW A LED ON THE FORM
        protected override void OnPaint(PaintEventArgs args)
        {
            base.OnPaint(args);
            // Update Nuitrack data. Data will be synchronized with skeleton time stamps.
            try
            {
                Nuitrack.Update(_skeletonTracker);
            }
            catch (LicenseNotAcquiredException exception)
            {
                Console.WriteLine("LicenseNotAcquired exception. Exception: ", exception);
                throw exception;
            }
            catch (Exception exception)
            {
                Console.WriteLine("Nuitrack update failed. Exception: ", exception);
            }

            // Draw LED
            Pen blackPen = new Pen(Color.Black, 5);
            args.Graphics.DrawEllipse(blackPen, 565, 502, 45, 45);

            //LED is Red
            args.Graphics.FillEllipse(Brushes.Red, 565, 502, 45, 45);

            // Draw skeleton joints
            if (_skeletonData != null)
            {
                foreach (var skeleton in _skeletonData.Skeletons)
                {
                    //LED becomes Green                   
                    args.Graphics.FillEllipse(Brushes.Green, 565, 502, 45, 45);                  
                }
            }
            //Update Form
           //this.Invalidate();
        }

0 个答案:

没有答案