Exemplo n.º 1
0
        public System.Windows.Media.Imaging.BitmapSource GetTrimImage(AuxiliaryController ac, int windowWidth)
        {
            int width  = windowWidth;
            int height = (int)((double)width / ac.AuxiliaryRatio);

            return(GetImage(Trim(ac), width, height));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 画像を保存する一連の処理を実行する
        /// </summary>
        public SaveResult Save(AuxiliaryController ac)
        {
            string filePath = new ImageFileSaveDialog(SaveNameExample, DirPath).Show();

            if (filePath == "")
            {
                return(SaveResult.Cancel);
            }

            SaveResult result;

            try
            {
                Bitmap bitmap = Trim(ac);
                bitmap.Save(filePath);
                result = SaveResult.Success;
            }
            catch
            {
                result = SaveResult.Failure;
            }

            Notify();
            return(result);
        }
Exemplo n.º 3
0
        private static bool IsMouseDownInsideAuxiliaryLine(AuxiliaryController ac, int mouseX, int mouseY)
        {
            TrimRect trimRect = new TrimRect(ac.AuxiliaryLeftTop,
                                             ac.AuxiliaryRightTop,
                                             ac.AuxiliaryRightBottom,
                                             ac.AuxiliaryLeftBottom);

            return(trimRect.IsInside(mouseX, mouseY));
        }
Exemplo n.º 4
0
 // 1/1スケール画像上の切り抜き範囲: 横の長さ
 public int TrimmingWidth(AuxiliaryController ac)
 {
     if (ac.AuxiliaryDegree == 0)
     {
         return(RightOriginalScale(ac) - LeftOriginalScale(ac));
     }
     else
     {
         return(CalcEuclideanDistOfOriginalScale(ac.AuxiliaryLeftTop, ac.AuxiliaryRightTop));
     }
 }
Exemplo n.º 5
0
 // 1/1スケール画像上の切り抜き範囲: 縦の長さ
 public int TrimmingHeight(AuxiliaryController ac)
 {
     if (ac.AuxiliaryDegree == 0)
     {
         return(BottomOriginalScale(ac) - TopOriginalScale(ac));
     }
     else
     {
         return(CalcEuclideanDistOfOriginalScale(ac.AuxiliaryLeftTop, ac.AuxiliaryLeftBottom));
     }
 }
Exemplo n.º 6
0
        /// <summary>
        /// 画像をTrimする
        /// </summary>
        /// <param name="ac"></param>
        /// <returns></returns>
        public Bitmap Trim(AuxiliaryController ac)
        {
            Bitmap bitmap = null;

            if (ac.AuxiliaryDegree == 0)
            {
                bitmap = common.Image.CreateTrimImage(BitmapImage,
                                                      LeftOriginalScale(ac),
                                                      TopOriginalScale(ac),
                                                      TrimmingWidth(ac),
                                                      TrimmingHeight(ac));
            }
            else
            {
                bitmap = common.Image.CreateTrimImage(BitmapImage,
                                                      PointRatio(ac.AuxiliaryLeftTop, ImageFitRatio),
                                                      PointRatio(ac.AuxiliaryLeftBottom, ImageFitRatio),
                                                      PointRatio(ac.AuxiliaryRightTop, ImageFitRatio),
                                                      PointRatio(ac.AuxiliaryRightBottom, ImageFitRatio),
                                                      ac.AuxiliaryDegree);
            }

            return(bitmap);
        }
Exemplo n.º 7
0
        public static KindMouseDownAuxiliaryLineArea GetKindMouseDownAuxiliaryLineArea(AuxiliaryController ac,
                                                                                       Point mouseDownCoordinateRelativeAuxiliaryLine)
        {
            int  mouseX            = (int)mouseDownCoordinateRelativeAuxiliaryLine.X;
            int  mouseY            = (int)mouseDownCoordinateRelativeAuxiliaryLine.Y;
            bool isNearLeftTop     = IsInRangeMouseDownArea(mouseX, mouseY, ac.AuxiliaryLeftTop);
            bool isNearLeftBottom  = IsInRangeMouseDownArea(mouseX, mouseY, ac.AuxiliaryLeftBottom);
            bool isNearRightTop    = IsInRangeMouseDownArea(mouseX, mouseY, ac.AuxiliaryRightTop);
            bool isNearRightBottom = IsInRangeMouseDownArea(mouseX, mouseY, ac.AuxiliaryRightBottom);

            // 補助線の4隅の点のいずれか
            if (isNearLeftTop)
            {
                return(KindMouseDownAuxiliaryLineArea.LeftTop);
            }
            else if (isNearLeftBottom)
            {
                return(KindMouseDownAuxiliaryLineArea.LeftBottom);
            }
            if (isNearRightTop)
            {
                return(KindMouseDownAuxiliaryLineArea.RightTop);
            }
            if (isNearRightBottom)
            {
                return(KindMouseDownAuxiliaryLineArea.RightBottom);
            }

            // 4隅の点ではないが、補助線の内側
            if (IsMouseDownInsideAuxiliaryLine(ac, mouseX, mouseY))
            {
                return(KindMouseDownAuxiliaryLineArea.Inside);
            }

            return(KindMouseDownAuxiliaryLineArea.Else);
        }
Exemplo n.º 8
0
 public int BottomOriginalScale(AuxiliaryController ac)
 {
     return((int)((double)ac.AuxiliaryBottom / ImageFitRatio));
 }
Exemplo n.º 9
0
 public int TopOriginalScale(AuxiliaryController ac)
 {
     return((int)((double)ac.AuxiliaryTop / ImageFitRatio));
 }
Exemplo n.º 10
0
 public Preview(ImageController ic, AuxiliaryController ac)
 {
     InitializeComponent();
     ShowTrimImage(ic, ac);
 }
Exemplo n.º 11
0
 private void ShowTrimImage(ImageController ic, AuxiliaryController ac)
 {
     xShowPreview.Source = ic.GetTrimImage(ac, windowWidth: 700);
 }
Exemplo n.º 12
0
 /// <summary>
 /// TODO: 比率の初期値どうする?config.ini管理?
 /// </summary>
 private void DisplayAuxiliaryLine(ImageController ic, AuxiliaryLineParameter.RatioType ratioType = AuxiliaryLineParameter.RatioType.W16H9)
 {
     _auxiliaryController    = new AuxiliaryController(ic, ratioType: ratioType);
     _auxiliaryLineRectangle = new AuxiliaryLineRectangleObserver(xAuxiliaryLine, _auxiliaryController);
     _trimmingImageLength    = new TrimmingImageLengthObserver(xAuxiliaryLineLength, ic, _auxiliaryController);
 }