함수 연결 프로그램 Zoom In/ Out
전에 구현했던게 있으니..
int factorIndex = 4;
float[] factors = new float[] { 0.2f, 0.4f, 0.6f, 0.8f, 1f, 1.2f, 1.4f, 1.6f, 1.8f, 2f, }; // 20 ~ 200%
float oldSizeFactor = 1f;
- ZoomOut
factorIndex--;
if (factorIndex < 0) factorIndex = 0;
pnlBoard.Scale(new SizeF( factors[factorIndex] / oldSizeFactor, factors[factorIndex] / oldSizeFactor));
pnlBoard.Invalidate();
oldSizeFactor = factors[factorIndex];
// 배율 조정시 스크롤이 있는 상태일때!! 왼쪽상단(left, top)에 판넬을 맞춰줘야 하니까..
int hv = pnlOutBorder.HorizontalScroll.Value;
int vv = pnlOutBorder.VerticalScroll.Value;
pnlBoard.Left = -hv;
pnlBoard.Top = -vv;
- ZoomIn
factorIndex++;
if (factors.Length <= factorIndex) factorIndex = factors.Length-1;
pnlBoard.Scale(new SizeF(factors[factorIndex] / oldSizeFactor, factors[factorIndex] / oldSizeFactor));
pnlBoard.Invalidate();
oldSizeFactor = factors[factorIndex];
// 배율 조정시 스크롤이 있는 상태일때!! 왼쪽상단(left, top)에 판넬을 맞춰줘야 하니까..
int hv = pnlOutBorder.HorizontalScroll.Value;
int vv = pnlOutBorder.VerticalScroll.Value;
pnlBoard.Left = -hv;
pnlBoard.Top = -vv;
** 함수, 호출 화살표등을 직접 드로잉 처리하고 있어서
이에 대한 크기조정도 적용해줘야 한다.
파일, 함수, 화살표등을 그리기전에...
e.Graphics.ScaleTransform( factors[factorIndex], factors[factorIndex] );
배율 조정을 해준다.
그리고 마우스 다운 이벤트에서 파일과 함수인경우 이름을 복사!
호출하는 함수부분에서는 대상 함수로 화살표의 색을 바꿔주기 때문에... 배율조정시 마우스 다운 위치를 계산해줘야 하는데...
Point pt = new Point((int)((float)e.Location.X / oldSizeFactor), (int)((float)e.Location.Y / oldSizeFactor));
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
JSFW.FunctionConnection] 프로그램 사용 중... (0) | 2022.11.29 |
---|---|
JSFW.FunctionConnect] 마무리 버젼? (0) | 2022.11.25 |
함수 연결 레벨 추가 그리기?.... (0) | 2022.11.14 |
TextBox.MultiLine 일때 Alt+Up, Alt+Down 선택행들 옮기기 구현. (0) | 2022.11.12 |
AsIs_Proc_Flow] 소스 따라가기 프로그램 만들자!! (0) | 2022.11.09 |