ClipRectBounds() публичный Метод

public ClipRectBounds ( Rectangle dest, Rectangle bounds, int factor ) : void
dest Rectangle
bounds Rectangle
factor int
Результат void
Пример #1
0
        /// <summary>
        ///  Retreive a sprite that has to be drawn within the given destination
        ///  rectangle, given the bounds of the viewport.  Also contains a scaling
        ///  factor.
        /// </summary>
        /// <param name="xFrame">Retrieve the Xth horizontal frame.</param>
        /// <param name="yFrame">Retrieve the Yth vertical frame.</param>
        /// <param name="dest">The destination rectangle for the sprite.</param>
        /// <param name="bounds">The view rectangle bounds.</param>
        /// <param name="factor">A scaling factor.</param>
        /// <returns></returns>
        public DirectDrawClippedRect GrabSprite(int xFrame, int yFrame, Rectangle dest, Rectangle bounds, int factor)
        {
#if TRACE
            GraphicsEngine.Profiler.Start("DirectDrawSpriteSurface.GrabSprite(int, int, RECT, RECT, int)");
#endif
            if (xFrame < 0 || xFrame >= animationFrames ||
                yFrame < 0 || yFrame >= animationTypes)
            {
                throw new Exception("Sprite request is out of range");
            }

            var spriteRect = new Rectangle(xFrame, yFrame, frameWidth, frameHeight);

            var ddClipRect = new DirectDrawClippedRect();
            ddClipRect.Destination = dest;
            ddClipRect.Source      = spriteRect;

            if (dest.Left >= bounds.Right || dest.Right <= bounds.Left || dest.Top >= bounds.Bottom ||
                dest.Bottom <= bounds.Top)
            {
                ddClipRect.Invisible = true;
#if TRACE
                GraphicsEngine.Profiler.End("DirectDrawSpriteSurface.GrabSprite(int, int, RECT, RECT, int)");
#endif
                return(ddClipRect);
            }
            ddClipRect.ClipRectBounds(dest, bounds, factor);

#if TRACE
            GraphicsEngine.Profiler.End("DirectDrawSpriteSurface.GrabSprite(int, int, RECT, RECT, int)");
#endif
            return(ddClipRect);
        }
        /// <summary>
        ///  Retreive a sprite that has to be drawn within the given destination
        ///  rectangle, given the bounds of the viewport.  Also contains a scaling
        ///  factor.
        /// </summary>
        /// <param name="xFrame">Retrieve the Xth horizontal frame.</param>
        /// <param name="yFrame">Retrieve the Yth vertical frame.</param>
        /// <param name="dest">The destination rectangle for the sprite.</param>
        /// <param name="bounds">The view rectangle bounds.</param>
        /// <param name="factor">A scaling factor.</param>
        /// <returns></returns>
        public DirectDrawClippedRect GrabSprite(int xFrame, int yFrame, Rectangle dest, Rectangle bounds, int factor)
        {
            #if TRACE
            GraphicsEngine.Profiler.Start("DirectDrawSpriteSurface.GrabSprite(int, int, RECT, RECT, int)");
            #endif
            if (xFrame < 0 || xFrame >= animationFrames ||
                yFrame < 0 || yFrame >= animationTypes)
            {
                throw new Exception("Sprite request is out of range");
            }

            var spriteRect = new Rectangle(xFrame, yFrame, frameWidth, frameHeight);

            var ddClipRect = new DirectDrawClippedRect();
            ddClipRect.Destination  = dest;
            ddClipRect.Source       = spriteRect;

            if (dest.Left >= bounds.Right || dest.Right <= bounds.Left || dest.Top >= bounds.Bottom ||
                dest.Bottom <= bounds.Top)
            {
                ddClipRect.Invisible = true;
            #if TRACE
                GraphicsEngine.Profiler.End("DirectDrawSpriteSurface.GrabSprite(int, int, RECT, RECT, int)");
            #endif
                return ddClipRect;
            }
            ddClipRect.ClipRectBounds(dest, bounds, factor);

            #if TRACE
            GraphicsEngine.Profiler.End("DirectDrawSpriteSurface.GrabSprite(int, int, RECT, RECT, int)");
            #endif
            return ddClipRect;
        }