예제 #1
0
        /// <summary>
        /// Convert the texture to a Bitmap
        /// </summary>
        /// <param name="target">Reference face</param>
        /// <param name="rectangle">Rectangle bounds</param>
        /// <returns>Bitmap handle or null</returns>
        protected Bitmap ToBitmap(TextureTarget target, Rectangle rectangle)
        {
            if (!Lock(target, ImageLockMode.ReadOnly, rectangle))
            {
                return(null);
            }

            Bitmap bm = new Bitmap(rectangle.Width, rectangle.Height);

            System.Drawing.Imaging.BitmapData bmd = bm.LockBits(rectangle,
                                                                System.Drawing.Imaging.ImageLockMode.WriteOnly,
                                                                System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            System.Runtime.InteropServices.Marshal.Copy(Data, 0, bmd.Scan0, Data.Length);
            bm.UnlockBits(bmd);

            Unlock(target);

            return(bm);
        }