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∙.