Beispiel #1
0
        /// <summary>
        /// キャンパスの変更設定を適用させた回転処理の元となる画像データを生成する機能を取得する
        /// </summary>
        /// <param name="isChangeCanvasSize">
        /// キャンパスサイズを変更するかのフラグ
        /// </param>
        /// <param name="changeSize">
        /// 変更するキャンパスサイズ(NULLを指定した場合は対角線の長さに拡大)
        /// </param>
        /// <param name="changeCenterPoint">
        /// 変更する中心位置(NULLを指定した場合は中心位置の変更はしない)
        /// </param>
        /// <returns>
        /// キャンパスの変更設定を適用させた回転処理の元となる画像データを生成する機能
        /// </returns>
        public static Func <Image, Image> GetCreateBaceImageFunc(
            bool isChangeCanvasSize, Size?changeSize, Point?changeCenterPoint)
        {
            // 回転させる画像の元データを生成するためのファンクションを生成
            Func <Image, Image> createBaceImage;

            if (isChangeCanvasSize && changeCenterPoint.HasValue)
            {
                // サイズ変更:有、中心位置変更:有の場合
                // ⇒キャンパスサイズ、中心位置を変更した画像データを使用
                if (changeSize.HasValue)
                {
                    createBaceImage = (image)
                                      => ImageTransform.ChangeCanvas(image, changeSize.Value, changeCenterPoint.Value);
                }
                else
                {
                    // 変更するサイズに指定がない場合は、中心点を考慮した対角線の長さに拡大する
                    createBaceImage = (image)
                                      => ImageTransform.ChangeCanvasToDiagonalSize(image, changeCenterPoint.Value);
                }
            }
            else if (isChangeCanvasSize && !changeCenterPoint.HasValue)
            {
                // サイズ変更:有、中心位置変更:無の場合
                // ⇒キャンパスサイズのみを変更した画像データを使用
                if (changeSize.HasValue)
                {
                    createBaceImage = (image) => ImageTransform.ChangeCanvas(image, changeSize.Value);
                }
                else
                {
                    // 変更するサイズに指定がない場合は対角線の長さに拡大する
                    createBaceImage = (image) => ImageTransform.ChangeCanvasToDiagonalSize(image);
                }
            }
            else if (!isChangeCanvasSize && changeCenterPoint.HasValue)
            {
                // サイズ変更:無、中心位置変更:有の場合
                // ⇒中心位置のみを変更した画像データを使用
                createBaceImage = (image) => ImageTransform.ChangeCanvas(image, changeCenterPoint.Value);
            }
            else
            {
                // サイズ変更:無、中心位置変更:無の場合
                // ⇒引数の画像データをそのまま使用
                createBaceImage = (image) => new Bitmap(image, image.Size);
            }

            // 生成したファンクションを返す
            return(createBaceImage);
        }