/** * @brief 병합된 상태에서 크기를 조정할 때 비율을 제대로 조정하기 위해서 사용 * @details 병합된 상태에서 각 Figure의 위치의 비율값을 각 Figure에 저장한다. 병합된 상태에서 확대 축소를 올바르게 작동시키기 위해 사용한다. 각 Figure들에 대해서 현재 MergeFigure에 대한 각 객체의 상대적인 위치를 저장해서 확대 축소 시 그 값을 사용한다. * @param merged 비율을 조절하기 위한 mergedFigure * @author 방준혁 * @date 07-24 */ public void setRatio(MergedFigure merged) { Rect r = (Rect)merged.getVectorElementAt(0); int mLeft = r.getLeft(); int mRight = r.getRight(); int mTop = r.getTop(); int mBottom = r.getBottom(); int mWidth = r.getWidth(); int mHeight = r.getHeight(); for (int i = 0; i < merged.getFigList().Count; i++) { r = (Rect)((Figure)merged.getFigList()[i]).getVectorElementAt(0); r.setRatio(0, (float)(mRight - r.getLeft()) / mWidth); r.setRatio(1, (float)(mRight - r.getRight()) / mWidth); r.setRatio(2, (float)(mBottom - r.getTop()) / mHeight); r.setRatio(3, (float)(mBottom - r.getBottom()) / mHeight); } }
/** * @brief mergedFigure를 unmerge된 상태의 Figure들로 분리한다. */ public void unmergeFigure() { if (drawingFigures.Count > 0) { foreach (Figure f in drawingFigures) { if (f is MergedFigure) { MergedFigure mf = f as MergedFigure; string motherGName = f.groupName; mf.deselect(); FigureList unmerge = mf.getFigList(); foreach (Figure temp in unmerge) { temp.groupName = motherGName; } drawnFigures.Remove(mf); drawnFigures.AddRange(unmerge); } } } }