| using System;␍␊ |
| using System.Collections.Generic;␍␊ |
| using System.Linq;␍␊ |
| using System.Text;␍␊ |
| using Microsoft.Xna.Framework.Graphics;␍␊ |
| using Microsoft.Xna.Framework;␍␊ |
| using Microsoft.Xna.Framework.Content;␍␊ |
| using GameStateManagement;␍␊ |
| ␍␊ |
| namespace Axios.Engine.Extensions␍␊ |
| {␍␊ |
| public static class Bitmap_extension␍␊ |
| {␍␊ |
| #if WINDOWS␍␊ |
| // System.Drawing is NOT avaiable on WP7 or Xbox␍␊ |
| /*␍␊ |
| * http://stackoverflow.com/a/7394185/195722␍␊ |
| * ␍␊ |
| * ␍␊ |
| * ␍␊ |
| */␍␊ |
| public static Texture2D GetTexture(this System.Drawing.Bitmap bitmap, GameScreen gameScreen)␍␊ |
| {␍␊ |
| BlendState oldstate = gameScreen.ScreenManager.GraphicsDevice.BlendState;␍␊ |
| gameScreen.ScreenManager.GraphicsDevice.BlendState = BlendState.AlphaBlend;␍␊ |
| Texture2D tex = new Texture2D(gameScreen.ScreenManager.GraphicsDevice, bitmap.Width, bitmap.Height, true, SurfaceFormat.Color);␍␊ |
| ␍␊ |
| System.Drawing.Imaging.BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bitmap.PixelFormat);␍␊ |
| ␍␊ |
| int bufferSize = data.Height * data.Stride;␍␊ |
| ␍␊ |
| //create data buffer ␍␊ |
| byte[] bytes = new byte[bufferSize];␍␊ |
| ␍␊ |
| // copy bitmap data into buffer␍␊ |
| System.Runtime.InteropServices.Marshal.Copy(data.Scan0, bytes, 0, bytes.Length);␍␊ |
| ␍␊ |
| // copy our buffer to the texture␍␊ |
| tex.SetData(bytes);␍␊ |
| ␍␊ |
| // unlock the bitmap data␍␊ |
| bitmap.UnlockBits(data);␍␊ |
| ␍␊ |
| gameScreen.ScreenManager.GraphicsDevice.BlendState = oldstate;␍␊ |
| return tex;␍␊ |
| }␍␊ |
| #endif␍␊ |
| }␍␊ |
| }␍␊ |