예제 #1
0
        /// <summary>
        /// Only support BGRA data.
        /// </summary>
        /// <param name="imageData"></param>
        /// <returns></returns>
        public void AddImage(byte[] imageData)
        {
            var result = Environment.Is64BitProcess ?
                         Interop64.AddImage(_encoderHandle, imageData, imageData.Length):
                         Interop32.AddImage(_encoderHandle, imageData, imageData.Length);

            if (result != 0)
            {
                throw new PusherException(result);
            }
        }
예제 #2
0
        /// <summary>
        /// Only support BGRA data.
        /// </summary>
        /// <param name="image"></param>
        /// <returns></returns>
        public void AddImage(Bitmap image)
        {
            var processImage = _layerImage;

            if (image.Width == _layerImage.Width && image.Height == _layerImage.Height)
            {
                processImage = image;
            }
            else
            {
                _layerGraphics.DrawImage(image, _layerRect);
            }
            var bmpData = processImage.LockBits(_layerRect, ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);
            var result  = Environment.Is64BitProcess ?
                          Interop64.AddImage(_encoderHandle, bmpData.Scan0, _layerDataSzie) :
                          Interop32.AddImage(_encoderHandle, bmpData.Scan0, _layerDataSzie);

            if (result != 0)
            {
                throw new PusherException(result);
            }
            processImage.UnlockBits(bmpData);
        }