Ejemplo n.º 1
0
            public void CopyToBitmap(Rectangle imageArea, IntPtr bitmap, int bitmapStride)
            {
                NativeBitmapSourceParameterValidation.CopyToBitmap(this, imageArea, bitmap, bitmapStride, out _);

                if (pixelFormat == PixelFormat.RGBA_32)
                {
                    IntPtr pixelsPtr = dataPtr + imageArea.Y * stride + imageArea.X * 4;
                    PixelConverter.Convert_RGBA_32BE_To_ARGB_32(pixelsPtr, stride, bitmap, bitmapStride, imageArea.Width, imageArea.Height);
                }
                else if (pixelFormat == PixelFormat.RGB_24)
                {
                    IntPtr pixelsPtr = dataPtr + imageArea.Y * stride + imageArea.X * 3;
                    PixelConverter.Convert_RGB_24BE_To_ARGB_32(pixelsPtr, stride, bitmap, bitmapStride, imageArea.Width, imageArea.Height);
                }
                else
                {
                    throw new InvalidOperationException($"Unexpected pixel format: {pixelFormat}.");
                }
            }