コード例 #1
0
ファイル: ImageUtils.cs プロジェクト: zhangli0092/opennetcf
        /// <summary>
        /// Rotate and/or flip bitmap
        /// </summary>
        /// <param name="bitmap">Image</param>
        /// <param name="type">Operation</param>
        /// <returns>Modified bitmap</returns>
        static public Bitmap RotateFlip(Bitmap bitmap, RotationAngle angle, FlipAxis axis)
        {
            if (bitmap == null)
            {
                throw new ArgumentNullException();
            }

            IBitmapImage image = BitmapToIImageBitmap(bitmap);

            try
            {
                IBitmapImage    imageBitmap = BitmapToIImageBitmap(bitmap);
                IBasicBitmapOps ops         = (IBasicBitmapOps)imageBitmap;
                if (angle != 0)
                {
                    ops.Rotate((float)angle, InterpolationHint.InterpolationHintDefault, out imageBitmap);
                    Marshal.FinalReleaseComObject(ops);
                    ops = (IBasicBitmapOps)imageBitmap;
                }
                if (axis != FlipAxis.None)
                {
                    ops.Flip((axis & FlipAxis.X) == FlipAxis.X, (axis & FlipAxis.Y) == FlipAxis.Y, out imageBitmap);
                    Marshal.FinalReleaseComObject(ops);
                    ops = (IBasicBitmapOps)imageBitmap;
                }
                return(IBitmapImageToBitmap(imageBitmap));
            }
            finally
            {
                Marshal.FinalReleaseComObject(image);
            }
        }
コード例 #2
0
ファイル: ImageUtils.cs プロジェクト: zhangli0092/opennetcf
        /// <summary>
        /// Flips image around X and/or Y axes
        /// </summary>
        /// <param name="bitmap">Image</param>
        /// <param name="axis">Axis or axes to flip on</param>
        private static Bitmap Flip(IBitmapImage image, FlipAxis axis)
        {
            Bitmap          bmRet;
            IBitmapImage    imageBitmap;
            IBasicBitmapOps ops = (IBasicBitmapOps)image;

            ops.Flip((axis & FlipAxis.X) == FlipAxis.X, (axis & FlipAxis.Y) == FlipAxis.Y, out imageBitmap);
            try
            {
                bmRet = IBitmapImageToBitmap(imageBitmap);
            }
            finally
            {
                Marshal.FinalReleaseComObject(imageBitmap);
            }
            return(bmRet);
        }
コード例 #3
0
ファイル: ImageUtils.cs プロジェクト: zhangli0092/opennetcf
        private static Bitmap Rotate(IBitmapImage image, float angle)
        {
            IBitmapImage    imageBitmap;
            Bitmap          bmRet;
            IBasicBitmapOps ops = (IBasicBitmapOps)image;

            ops.Rotate(angle, InterpolationHint.InterpolationHintDefault, out imageBitmap);
            try
            {
                bmRet = IBitmapImageToBitmap(imageBitmap);
            }
            finally
            {
                Marshal.FinalReleaseComObject(imageBitmap);
            }
            return(bmRet);
        }