Canvas Zoom-In/Out

Canvas에 관하여 한번 질문글을 올렸었지만, 추가로 어려움을 겪고 있어서 다시한번 문의글 작성하게 되었습니다.
자주 올린점 사과드려요 ㅠ_ㅠ

Canvas를 이용해서 Tile Map Design 처럼 사용할 수 있도록 만들고 있는 중 입니다.
제목과 같이 Zoom In 과 Out처리 기능을 써야해서 자료를 찾고있는데,
생각보다 어려운것 같아 문의 드립니다…!

(1) ContentPresenter를 이용해 Binding 처리를 해보았지만, Tiles 표현을 하기위해 많은양의 Child를 Add 해야 하니 UI쪽 부하가 심하게 걸려 이방법은 누락시켰었습니다.
image

(2) Tiles 표현을 VisualBrush로 바꾸려고 하니 Canvas 자체가 Binding이 되지는 않더군요, 여기에 추가로 Zoom-In/Out을 넣고 싶은 상황입니다.
image

1개의 좋아요

개체가 많지 않을 경우 Canvas를 잘 활용하는게 가장 개발 비용이 적을 듯 싶고요,

Canvas를 이용하면서 줌인/줌아웃의 가장 간단한 구현은 ViewPort를 이용하는 것입니다.

Canvas를 ViewBox로 감싸서 줌인/줌아웃을 아마 구현도 될 겁니다.

만약 개체가 많아 느리다면 직접 그리는것 또한 방법입니다.

FrameworkElementOnRender() 메소드를 구현해서 인자의 DrawingContext를 이용해 그리기 할 수 있습니다.

2개의 좋아요