Metric megjelenítési módok

Metric megjelenítési módok

y = cyChar * (1 + i); [Szöveg kimenet]

EndPaint (hwnd, ps); vissza 0;

Most a számítás a y-koordináta TextOut funkció megköveteli értékek iVscrollPos. Ez azt jelenti, hogy helyre szöveget a kimeneti függvény rutin nélkül halad, hogy egy értéket iVscrollPos. Mivel mi létrehozott kimeneti szöveges megváltoztatásával eredete az ablakon.

Ha van tapasztalata téglalap (derékszögű) koordináta-rendszerben, majd transzfer a logikai pont (0, 0) a munkaterületen a központ, mint tettük korábban tűnhet hasznos. Van azonban egy kis probléma adódik a MM_TEXT mód: általában derékszögű koordináta y koordináta értéke növekszik, amikor felfelé mozog, és MM_TEXT mód - lefelé. Ebben az értelemben furcsa MM_TEXT mód, míg a következő öt megjelenítési mód, hogy helyesen.

A Windows tartalmaz öt megjelenítési mód kifejezni logikai koordinátákat fizikai egység. Mivel a logikai koordinátái az x és y tengely alakítjuk ugyanazon a fizikai egység, ezek a megjelenítési mód, hogy segítsen felhívni egy kört kerek és szögletes dobozok.

Öt mutató megjelenítési módok (metrikus mapping mód) az alábbiak szerint növekvő sorrendben pontossággal. Összehasonlításképpen, a két jobb oldali oszlop méreteit mutatja a logikai egységek hüvelykben vagy milliméterben (mm).

Ahhoz, hogy egy ötlet, hogy a felbontás MM_TEXT mód korrelál ezeket az engedélyeket, például, hogy a normál kijelző VGA, minden pixel amelynek a mérete 0,325 mm szélességű és magasságú, fizikai VGA - koordináták durvább, mint a logikai koordinátákat bármilyen metrikus megjelenítési mód.

A lézernyomtató felbontása 300 pont / hüvelyk, minden egyes pixel a mérete 0,0033 hüvelyk - nagyobb felbontású, mint a módokat és MM_LOENGLISH MM_LOMETRIC, de alacsonyabb, mint az üzemmódok

MM_HIENGLISH, MM_TWIPS és MM_HIMETRIC.

A származási és a hossza az alapértelmezett az alábbiakban:

Eredete az ablak (Window eredetű)

Meg lehet változtatni

A származási O mező: (ViewPort eredetihez)

Meg lehet változtatni

A hossza az ablak (Window mértékben)

Ez nem lehet változtatni

A hossza kimenet régió (Viewport mértékben)

Ez nem lehet változtatni

A hossza az ablak és a kimeneti régió függ a megjelenítési módot és az oldalarány (képarány) a készülék (a magasságának aránya az szélességének a pixel). Mint korábban említettük, a mértéke a saját nincs értelme. Csak akkor van értelme a hozzáállás. Itt a képlet a koordináta-transzformáció újra:

xViewport = (XWindow - xWinOrg) × (xViewExt / xWinExt) + xViewOrg yViewport = (yWindow - yWinOrg) × (yViewExt / yWinExt) + yViewOrg,

A MM_LOENGLISH módban például a Windows kiszámítja a hossza, hogy az megfeleljen az alábbi összefüggés:

xViewExt / xWinExt = pixelek számát vízszintesen 0,01 inch -yViewExt / yWinExt = pixelek számát függőlegesen 0,01 hüvelykes, együttesen a mínusz jel

Sok megjelenítő eszköz (például VGA), a tömörítési arány 1-nél kisebb, mert a Windows csak akkor működik, egész számok, a használata hatékonyabb tömörítési arány, mint használata

* A fent meghatározott mértékegységben egyenlő 1/20 twip pont (mely megegyezik 1/72 inch), és pontosan egyenlő 1/1440 inch.

Metric megjelenítési módok

abszolút értéke a skála faktorok, hogy csökkentse a hibákat az átalakítás a logikai és fizikai koordinátákat.

Megjegyzés: a mínusz jel előtt nyújtási arány a függőleges tengelyen. Ez megváltoztatja a tengely irányában mínusz y.

Ezen öt megjelenítési mód, a koordináta-érték y növekszik, ahogy a

működni DPtoLP. Tekintettel arra, hogy a pt típusú változó POINT struktúra, az alábbi kódot mozgatja a logikai (0,0) pont a közepén a munkaterület:

pt.x = cxClient; pt.y = cyClient; DPtoLP (MFT PT, 1);

SetWindowOrgEx (MFT -pt.x / 2, -pt.y / 2, NULL);

Saját megjelenítési módok

A fennmaradó két megjelenítési módot nevezzük MM_ISOTROPIC és MM_ANISOTROPIC. Két megjelenítési mód, amelyben a Windows lehetővé teszi, hogy módosítsa a hossza a kimeneti terület és az ablakok, és ezáltal megváltoztatja a nagyítási tényező, amely a Windows használ átalakítani logikai koordinátákat fizikai. Izotróp szó ugyanazt jelenti minden irányban; anizotróp - egyenetlen. Ahogy a mutató megjelenítési módok előzőekben tárgyalt MM_ISOTROPIC ugyanazt a mérési tengely. Logikai egység x tengelye azonos teljesítmény a fizikai készülékek logikai egység az Y tengelyen. Segít, ha kell létrehozni egy képet a megfelelő relatív méretét, függetlenül a relatív méret a kijelző pixel.

A különbség MM_ISOTROPIC mód és metrikus megjelenítési mód az, hogy a MM_ISOTROPIC módban, akkor az ellenőrzés a fizikai méretét a logikai egységet. Ezt megteheti a fizikai mérete logikai egységet, így a képek mindig foglalt a munkaterületet az ablakon, akár egy kicsinyített vagy nagyított. Például, a program kapcsolók órán ANACLOCK (analóg óra) a fej 7 - egy példa izotrop képet. Órák mindig kör alakú. Amint megváltoztatja a az ablak méretét, illetve azonnal megváltoztatja a kép méretét. Windows szoftver képes kezelni kép átméretezés által megfelelő változást a hossza az ablak és a kimeneti területen. Ebben az esetben a program használhatja ugyanazt a logikai egység hívásakor rajz függetlenül működik az ablak méretét.

Metric megjelenítési módok

Néha MM_TEXT megjelenítési mód és más módok nevű mutatót teljesen kénytelen megjelenítési mód. Ez azt jelenti, hogy nem képesek változtatni a hosszát az ablak és a kimeneti területen, így a skála a transzformáció logikai eszköz koordinátákat. MM_ISOTROPIC - részben kényszerített megjelenítési módot. A Windows lehetővé teszi, hogy módosítsa a hossza az ablak és a kimeneti területen, de a rendszer átalakítja őket, hogy a logikai koordinátái az x és y azonos megértése a fizikai egység. Kijelző mód MM_ANISPTROPIC - nem kényszerítő erejű. Módosíthatja az ablakok és mértéke a kimeneti területen. ezek az értékek nem átalakítani a rendszert.

Kijelző mód MM_ISOTROPIC

Kijelző mód MM_ISOTROPIC ideális felhasználó által kiválasztott tengely, miközben az egyenlő logikai egység mindkét tengelyen. Téglalapok azonos logikai szélessége és magassága jelennek terek, ellipszis egyenlő logikai szélessége és magassága jelennek egy kört.

Amikor először telepíti MM_ISOTROPIC megjelenítési mód, a Windows használja az azonos hosszúságú az ablakon, és a kimeneti területen, mint a MM_LOMETRIC módban. (Azonban legyen óvatos!) A különbség az, hogy most már meg lehet változtatni a hosszát az Ön által előnyben részesített segítségével SetWindowExtEx és SetViewportExtEx funkciót. Akkor a Windows fogja változtatni őket, hogy a logikai koordinátáit mindkét tengelyen azonos képviselet fizikai koordinátákat.

Leggyakrabban akkor használja SetWindowExtEx funkció paramétereket, mint például a kívánt méretet a logikai ablak logika és paraméterek SetViewportExtEx funkciók - mint a mostani magassága és szélessége a munkaterület. Amikor a Windows átalakítja ennyiben arra törekszik, hogy összehangolja a logikai ablakot a fizikai teljesítmény területén, amelyek eredményeként az a tény, hogy része a kiadási terület kívül esik a logikai mezőbe. SetWindowExtEx kell hívni egy függvényt SetViewportExtEx függvényhívása kihasználása érdekében a munkaterület a tér a lehető leghatékonyabban.

Tegyük fel például, azt szeretné, hogy a hagyományos koordináta-rendszerben a valós egyik negyedben, ahol a pont (0, 0) - bal alsó sarkában a munkaterületet, és a szélesség és a magasság változást a 0-tól 32767 Azt is szeretnénk, hogy egységnyi tengelyek mentén x és y azonos fizikai reprezentáció. Ehhez kövesse az alábbi lépéseket:

SetWindowExtEx (hdc, 32767, 32767, NULL);

SetViewportExtEx (MFT cxClient, -cyClient, NULL);

SetViewportOrgEx (hdc, 0, cyClient, NULL);

Ha ezután kap értéket az ablak mértékben és kiadási területet a GetWindowExtEx és GetViewportExtEx. nem lesz egyenlő a cél értéket. A Windows átalakítja hossza alapján a megjelenítő eszköz képarány (képarány) úgy, hogy a logikai egységek azonos fizikai méreteit mindkét tengely mentén.

Ha a szélessége a munkaterület nagyobb, mint a magassága (a fizikai

Ebben a kimeneti kód terület egyenlő lesz a hossza a teljes képernyőt pixel. A hossza az ablak kell beállítani, hogy illeszkedjen a képernyőn egységekben 1/16 hüvelyk. Indexet használ és HORZSIZE VERTSIZE a GetDeviceCaps funkciót. megkapjuk a méret a képernyő milliméterben. Ha dolgoztunk lebegőpontos számok, tudtuk alakítani milliméter hüvelyk elosztjuk 25,4, majd átalakítani hüvelyk egységekbe egyenlő 1/16 hüvelyk szorozni az eredménye elosztjuk 16. De mivel dolgozunk egész meg kell szorozzuk mm x 160 és osztva 254.

A legtöbb eszköz, ez a kimeneti kód logikailag egységek sokkal több, mint egy fizikai mértékegységet. Minden, amit felhívni a készülék egy fizikai hely, néhány akár 1/16 hüvelyk. Nem tudod felhívni két vízszintes vonal elosztva 1/32, mivel ez szükségessé beállítás frakcionált logikai koordinátákat.

MM_ANISOTROPIC: kép kivágás

Amikor beállítja a hossza a kimeneti terület és ablakok MM_ISOTROPIC megjelenítési mód, a Windows átalakítja ezeket az értékeket úgy, hogy a logikai egység mindkét tengelyen azonos kifejezést fizikai egységekben. A MM_ANISOTROPIC Windows megjelenítési mód nem tudja ezt a konverziót. Ez azt jelenti, hogy MM_ANISOTROPIC mód nem szükségszerűen hozza létre a helyes képarány (képarány).

Egyrészt, akkor MM_ANISOTROPIC rezsim esetekben, ahol tetszőleges koordinátákat a munkaterület, valamint MM_ISOTROPIC módban. A következő kód meghatározza egy pontot (0, 0) a bal alsó sarokban a munkaterületre, és a tartományban az x és y tengelyek 0-32.767:

SetWindowExtEx (hdc, 32767, 32767, NULL);

SetViewportExtEx (MFT cxClient, -cyClient, NULL);

SetViewportOrgEx (hdc, 0, cyClient, NULL);

A letöltés folytatásához össze kell rakni egy képet:

Kapcsolódó cikkek