Пример #1
0
        /// <summary>
        /// Copy from a byte array to this buffer
        /// </summary>
        public void FromBytes(byte[] buffer, PixelFormats format)
        {
            int idxBuffer = 0;
            int idxData   = 0;

            do
            {
                byte a = buffer[idxBuffer + format.AlphaOffset]; //alpha
                byte r = buffer[idxBuffer + format.RedOffset];   //red
                byte g = buffer[idxBuffer + format.GreenOffset]; //green
                byte b = buffer[idxBuffer + format.BlueOffset];  //blue

                Data[idxData] = (uint)(a << 24) | (uint)(r << 16) | (uint)(g << 8) | (uint)b;
                idxBuffer    += 4;;
                idxData++;
            }while (idxBuffer < buffer.Length);
        }
Пример #2
0
        /// <summary>
        /// Convert this buffer to byte array. Assuming 32-bit pixel format
        /// </summary>
        public byte[] ToBytes(PixelFormats format)
        {
            byte[] buffer = new byte[Width * Height * 4];

            int pixelOffset = 0;
            int dataOffset  = 0;

            for (int y = 0; y < Height; y++)
            {
                for (int x = 0; x < Width; x++)
                {
                    uint c = Data[dataOffset];
                    buffer[pixelOffset + format.AlphaOffset] = (byte)((c & 0xFF000000) >> 24); // alpha
                    buffer[pixelOffset + format.RedOffset]   = (byte)((c & 0x00FF0000) >> 16); // red
                    buffer[pixelOffset + format.GreenOffset] = (byte)((c & 0x0000FF00) >> 8);  // green
                    buffer[pixelOffset + format.BlueOffset]  = (byte)((c & 0x000000FF));       // blue

                    dataOffset++;
                    pixelOffset += 4;
                }
            }
            return(buffer);
        }
Пример #3
0
        /// <summary>
        /// Convert this buffer to byte array. Assuming 32-bit pixel format
        /// </summary>
        public byte[] ToBytes(PixelFormats format)
        {
            byte[] buffer = new byte[Width * Height * 4];

            int pixelOffset = 0;
            int dataOffset = 0;
            for (int y = 0; y < Height; y++)
            {
                for (int x = 0; x < Width; x++)
                {
                    uint c = Data[dataOffset];
                    buffer[pixelOffset + format.AlphaOffset] = (byte)((c & 0xFF000000) >> 24); // alpha
                    buffer[pixelOffset + format.RedOffset] = (byte)((c & 0x00FF0000) >> 16); // red
                    buffer[pixelOffset + format.GreenOffset] = (byte)((c & 0x0000FF00) >> 8); // green
                    buffer[pixelOffset + format.BlueOffset] = (byte)((c & 0x000000FF)); // blue

                    dataOffset++;
                    pixelOffset += 4;
                }
            }
            return buffer;
        }
Пример #4
0
        /// <summary>
        /// Copy from a byte array to this buffer
        /// </summary>
        public void FromBytes(byte[] buffer, PixelFormats format)
        {
            int idxBuffer = 0;
            int idxData = 0;
            do
            {
                byte a = buffer[idxBuffer + format.AlphaOffset];//alpha
                byte r = buffer[idxBuffer + format.RedOffset];//red
                byte g = buffer[idxBuffer + format.GreenOffset];//green
                byte b = buffer[idxBuffer + format.BlueOffset];//blue

                Data[idxData] = (uint)(a << 24) | (uint)(r << 16) | (uint)(g << 8) | (uint)b;
                idxBuffer += 4; ;
                idxData++;
            }
            while (idxBuffer < buffer.Length);
        }