/// <summary> /// Создает ScanlineRenderer и копирует в него изображение из Bitmap. /// </summary> /// <param name="bitmap">Объект Bitmap</param> /// <returns>Экземпляр RasterData</returns> public static RasterData FromBitmap(Bitmap bitmap) { if (bitmap == null) { throw new ArgumentNullException("bitmap"); } if (bitmap.PixelFormat != System.Drawing.Imaging.PixelFormat.Format32bppArgb) { throw new ArgumentException("Illegal pixel format. Should be 32bppArgb", "bitmap"); } RasterData renderer = new RasterData(bitmap.Width, bitmap.Height); System.Drawing.Imaging.BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb); try { System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, renderer._buffer, 0, bitmap.Width * bitmap.Height); } finally { bitmap.UnlockBits(bmpData); } return(null); }
/// <summary> /// Создает экземпляр RenderingPipeline. /// </summary> /// <param name="rasterData">Растр</param> /// <param name="spanGenerator">Генератор последовательностей пикселей</param> /// <param name="parallelizationLevel">Степень распараллеливания</param> public RenderingPipeline(RasterData rasterData, SpanGenerator spanGenerator, ParallelizationLevel parallelizationLevel) { _rasterData = rasterData; _spanGenerator = spanGenerator; _parallelizationLevel = parallelizationLevel; }
/// <summary> /// Создает ScanlineRenderer и копирует в него изображение из Bitmap. /// </summary> /// <param name="bitmap">Объект Bitmap</param> /// <returns>Экземпляр RasterData</returns> public static RasterData FromBitmap(Bitmap bitmap) { if (bitmap == null) throw new ArgumentNullException("bitmap"); if (bitmap.PixelFormat != System.Drawing.Imaging.PixelFormat.Format32bppArgb) throw new ArgumentException("Illegal pixel format. Should be 32bppArgb", "bitmap"); RasterData renderer = new RasterData(bitmap.Width, bitmap.Height); System.Drawing.Imaging.BitmapData bmpData = bitmap.LockBits(new Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb); try { System.Runtime.InteropServices.Marshal.Copy(bmpData.Scan0, renderer._buffer, 0, bitmap.Width * bitmap.Height); } finally { bitmap.UnlockBits(bmpData); } return null; }