1. ScalableMappingMode ¶
λ
Όλ¦¬ μ’νμ μ₯μΉ μ’νκ°μ λ§€νμ λ³κ²½ν μ μλ λͺ¨λλ λκ°μ§κ° μ‘΄μ¬νλ€.
MM_ISOTROPIC, MM_ANISOTROPIC
μ μμ κ²μ x, yμΆμ λν scale factor λ₯Ό λμΌνκ², νμλ κ°κ° λ€λ₯΄κ² μ€μ νλ κ²μ΄ κ°λ₯νλ€.
MM_ISOTROPIC, MM_ANISOTROPIC
μ μμ κ²μ x, yμΆμ λν scale factor λ₯Ό λμΌνκ², νμλ κ°κ° λ€λ₯΄κ² μ€μ νλ κ²μ΄ κ°λ₯νλ€.
WindowOrigin | μλμ°μ μΌμͺ½ μλΉ λ Όλ¦¬ μ’ν. CDC::SetWindowOrg() ν¨μλ₯Ό νΈμΆν΄μ μ€μ |
WindowExtent | λ Όλ¦¬ μ’ν μμ μ§μ λμ΄ μλ μλμ°μ ν¬κΈ°. CDC::SetWindowExt()λ‘ νΈμΆ |
ViewportOrigin | μ₯μΉ μ’νμ λμ΄ μλ μλμ°μ μΌμͺ½ μλ¨μ μ’ν. CDC::SetViewportOrg()λ‘ νΈμΆ |
ViewportExtent | μ₯μΉ μ’ν λ¨μμ μλμ°μ ν¬κΈ°. CDC::SetViewportExt()ν¨μλ‘ νΈμΆ |
λ·°ν¬νΈλ λ
Όλ¦¬μ’νκ° μ₯μΉμ’νλ‘ λ³νλλ νλΌλ©ν°μ μν μ νλ€.
2. LogicalCoordinate To DeviceCoordinate ¶
~cpp xDevice = (xLogical - xWindowOrg) * (xViewPortExt / xWindowExt) + xViewportOrg
~cpp yDevice = (yLogical - yWindowOrg) * (yViewPortExt / yWindowExt) + yViewportOrg
μ’νκ³κ° MM_ISOTROPIC, MM_ANISOTROPIC μ΄μΈμ λ€λ₯Έ κ²μ WindowExt, ViewPortExt κ° κ³ μ λμ΄ λ³κ²½μ΄ λΆκ°λ₯νλ€.
CDC::SetWindowExt(), SetViewportExt()λ₯Ό νΈμΆν΄λ μλ¬΄λ° λ³νκ° μκΈ°μ§ μλλ€.
3. νλ κΈ°λ₯μμ CScrollView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) ¶
~cpp // TODO: νλ κΈ°λ₯μ ꡬνμ μν΄μ λ·°ν¬νΈμ λ²μλ₯Ό λ³κ²½νλ€. CPainterDC* pDoc = GetDocument(); pDC->SetMapMode(MM_ANISOTROPIC); // map mode μ€μ CSize DocSize = pDoc->GetDocSize(); // MM_LOENGLISH λͺ¨λλ₯Ό μνκΈ° λλ¬Έμ yμ λ²μλ μμκ° λμ΄μΌ νλ€. DocSize.cy = -DocSize.cy; pDoc->SetWindowExt(DocSize); // μλμ°μ λ²μλ₯Ό μ€μ νλ€. // μΈμΉλΉ ν½μ μ κ°μλ₯Ό μ»λλ€. int xLogPixels = pDC->GetDeviceCaps(LOGPIXELSX); // μΈμμ ν΄λΉνλ μ₯μΉ μ 보λ₯Ό 리ν΄νλ€. μΈμΉλΉ ν½μ μ κ°μλ₯Ό 리ν΄. 100λ¨μ int yLogPixels = pDC->GetDeviceCaps(LOGPIXELSY); // xμ yμμμ λ·° ν¬νΈ λ²μλ₯Ό κ³μΌνλ€. int xExtent = DocSize.cx * m_Scale * xLogPixels / 100; int yExtent = DocSize.cy * m_Scale * yLogPixels / 100;