void OnUpdateRect(DisplRect r)
 {
     SBrush.Color = Color.FromArgb(r.Argb);
     RGraphics.FillRectangle(SBrush, r.Rectangle);
 }
        void DoRectUpdated(DisplRect r)
        {
            r.SetArgb(Palette, PauseDim);

            if (UpdateRect != null)
            {
                TransformRect(ref r);
                if (ClipRect(ref r))
                {
                    UpdateRect(r);
                    FrameRectCount++;
                }
            }
        }
        void TransformRect(ref DisplRect r)
        {
            r.X -= OffsetLeft;
            r.Y -= ClipTop;

            r.X *= PixelSize.Width;
            r.Y *= PixelSize.Height;
            r.Width *= PixelSize.Width;
            r.Height *= PixelSize.Height;

            r.X += CenteringOffset.Width;
            r.Y += CenteringOffset.Height;
        }
 bool ClipRect(ref DisplRect r)
 {
     if (r.X >= ViewPortSize.Width || r.Right < 0)
     {
         return false;
     }
     if (r.X < 0)
     {
         r.Width += r.X;
         r.X = 0;
     }
     if (r.Right >= ViewPortSize.Width)
     {
         r.Width -= r.Right - ViewPortSize.Width;
     }
     return r.Width > 0;
 }