Класс для выполнения низкоуровневых операций (на уровне пикселей и их последовательностей) над буфером изображения.
Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 /// <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;
 }
Ejemplo n.º 3
0
        /// <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;
        }
Ejemplo n.º 4
0
 /// <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;
 }