..::Mapovacφ m≤dy::..

slou₧φ k nastavenφ logick²ch jednotek a velikosti okna. SkuteΦnß velikost okna se nezm∞nφ ale funkce pracujφcφ s DC se chovajφ jako by se zm∞nila.

Mapovacφ m≤d se nastavuje pomocφ funkce SetMapMode(...), jejφ₧ parametr urΦuje nastaven² mapovacφ m≤d. Musφte ji volat poka₧dΘ, kdy₧ znovu zφskßte DC. Tj. v ka₧dΘm zpracovßnφ zprßvy WM_PAINT, poka₧dΘ kdy₧ zφskßte DC pomocφ funkce GetDC(...) nebo pomocφ t°φd MFC CClientDC, CPaintDC atd., jinak z∙stane mapovacφ m≤d na v²chozφ hodnot∞ co₧ je MM_TEXT.

Mo₧nΘ mapovacφ m≤dy (parametry funkce SetMapMode):

Mapovacφ m≤d LogickΘ jednotky Kladn² sm∞r osy X Kladn² sm∞r osy Y
MM_TEXT pixely doprava dol∙
MM_LOMETRIC 0,1 milimetru doprava nahoru
MM_HIMETRIC 0,01 milimetru doprava nahoru
MM_LOENGLISH 0,01 palce doprava nahoru
MM_HIENGLISH 0,001 palce doprava nahoru
MM_TWIPS 1/20 pixelu =
1/1440 palce
(1pixel = 1/72 palce)
doprava nahoru
MM_ISOTROPIC nastavitelnΘ (X=Y) nalstaviteln² nastaviteln²
MM_ANISOTROPIC nastavitelnΘ nalstaviteln² nastaviteln²

V²chozφ mapovacφ m≤d je v₧dy MM_TEXT.

Mapovacφ m≤dy MM_ISOTROPIC a MM_ANISOTROPIC se liÜφ tφm, ₧e u m≤du MM_ISOTROPIC z∙stßvajφ jednotky osy x stejnΘ jako jednotky osy y, zatφmco u MM_ANISOTROPIC se mohou liÜit.

U mapovacφch m≤d∙ MM_ISOTROPIC a MM_ANISOTROPIC nastavφte jednotky pomocφ funkcφ SetWindowExt a SetViewportExt nßsledujφcφm zp∙sobem:

CMyWnd::OnPaint()

{

CPaintDC dc(this);

CRect rc;

GetClientRect(&rc);    // zjiÜt∞nφ skuteΦnΘ velikosti okna v pixelech

dc.SetMapMode(MM_ANISOTROPIC);    // nastavenφ mapovacφho m≤du

/*

Nßsledujφcφ dva °ßdky nastavφ logickou velikost okna (m∞°φtko v∙Φi p∙vodnφmu) na 1000x500.

To je dosa₧eno zadßnφm skuteΦnΘ velikosti okna do funkce SetViewportExt a po₧adovanΘ logickΘ velikosti okna do SetWindowExt.

Zßrove≥ otoΦφ orientaci osy Y na opaΦnout (z kladn² sm∞r dol∙ na kladn² sm∞r nahoru) pomocφ znamφnka "-" ve funkci SetWindowExt u po₧adovanΘ y-psylonovΘ velikosti okna.

*/

dc.SetViewportExt(rc.Width(),rc.Height());

dc.SetWindowExt(1000,-500);

/*

Te∩ ji₧ se okno chovß jako by m∞lo velikost 1000x500 a¥ u₧ jeho velikost zm∞nφte jakkoli.

*/

// Nßsledujφcφ °ßdek nastavφ poΦßtek sou°adnic do st°edu okna

dc.SetViewportOrg(rc.Width()/2, rc.Height()/2);

}

PoΦßtek sou°adnic je u vÜech mapovacφch m≤d∙ nastaven na lev² hornφ okraj okna. To m∙₧ete zm∞nit pomocφ funkce SetViewportOrg, kterΘ zadßte po₧adovanou polohu poΦßtku a to v pixelech, absolutn∞ k levΘmu hornφmu rohu okna a kladn² sm∞r doprava a dol∙.