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)); }
/// <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); }
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)); }
// 1/1スケール画像上の切り抜き範囲: 横の長さ public int TrimmingWidth(AuxiliaryController ac) { if (ac.AuxiliaryDegree == 0) { return(RightOriginalScale(ac) - LeftOriginalScale(ac)); } else { return(CalcEuclideanDistOfOriginalScale(ac.AuxiliaryLeftTop, ac.AuxiliaryRightTop)); } }
// 1/1スケール画像上の切り抜き範囲: 縦の長さ public int TrimmingHeight(AuxiliaryController ac) { if (ac.AuxiliaryDegree == 0) { return(BottomOriginalScale(ac) - TopOriginalScale(ac)); } else { return(CalcEuclideanDistOfOriginalScale(ac.AuxiliaryLeftTop, ac.AuxiliaryLeftBottom)); } }
/// <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); }
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); }
public int BottomOriginalScale(AuxiliaryController ac) { return((int)((double)ac.AuxiliaryBottom / ImageFitRatio)); }
public int TopOriginalScale(AuxiliaryController ac) { return((int)((double)ac.AuxiliaryTop / ImageFitRatio)); }
public Preview(ImageController ic, AuxiliaryController ac) { InitializeComponent(); ShowTrimImage(ic, ac); }
private void ShowTrimImage(ImageController ic, AuxiliaryController ac) { xShowPreview.Source = ic.GetTrimImage(ac, windowWidth: 700); }
/// <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); }