Megosztás a következőn keresztül:


Automatikus skálázás

Az automatikus skálázás lehetővé teszi, hogy egy adott kijelzőfelbontással vagy betűtípussal rendelkező gépen tervezett űrlap és vezérlői megfelelően jelenjenek meg egy másik gépen, eltérő megjelenítési felbontással vagy betűtípussal. Biztosítja, hogy az űrlap és vezérlői intelligensen méretezhetők át, hogy összhangban legyenek a natív ablakokkal és más alkalmazásokkal a felhasználók és más fejlesztők gépein. Az automatikus skálázás és a vizuális stílusok lehetővé teszik, hogy a Windows Forms-alkalmazások egységes megjelenést és megjelenést tartsanak fenn az egyes felhasználók számítógépén található natív Windows-alkalmazásokkal összehasonlítva.

Az automatikus skálázás többnyire a Várt módon működik a Windows Formsban. A betűtípusséma módosítása azonban problémás lehet. A probléma megoldására példa: Útmutató: Válasz a Betűtípusséma változásaira windowsos űrlapalkalmazásokban.

Automatikus skálázásra van szükség

Automatikus skálázás nélkül az egy megjelenítési felbontáshoz vagy betűtípushoz tervezett alkalmazás túl kicsi vagy túl nagy lesz a felbontás vagy a betűtípus módosításakor. Ha például az alkalmazás alapkonfigurációként Tahoma 9 ponttal lett tervezve, akkor a beállítás nélkül túl kicsinek fog tűnni, ha olyan gépen fut, ahol a rendszer betűtípusa Tahoma 12 pont. A szövegelemek, például a címek, a menük, a szövegdoboz tartalma és így tovább, kisebbek lesznek, mint más alkalmazások. Ezenkívül a szöveget tartalmazó felhasználói felületi elemek (például a címsor, a menük és számos vezérlő) mérete a használt betűtípustól függ. Ebben a példában ezek az elemek is viszonylag kisebbek lesznek.

Hasonló helyzet akkor fordul elő, ha egy alkalmazás egy bizonyos megjelenítési felbontásra van tervezve. A leggyakoribb megjelenítési felbontás 96 pont/hüvelyk (DPI), amely 100% kijelzőméretezésnek felel meg, de a nagyobb felbontású kijelzők 125%, 150%, 200% (ami 120, 144 és 192 DPI) és annál gyakoribbak. Módosítás nélkül egy alkalmazás, különösen egy grafikus alapú alkalmazás, amely egy felbontáshoz lett tervezve, túl nagynak vagy túl kicsinek fog megjelenni, ha egy másik felbontásban fut.

Az automatikus skálázás az űrlap és a gyermekvezérlők relatív betűméret vagy megjelenítési felbontás alapján történő automatikus átméretezésével igyekszik elhárítani ezeket a problémákat. A Windows operációs rendszer támogatja a párbeszédpanelek automatikus skálázását egy relatív mértékegység, az úgynevezett párbeszédpanel-egységek használatával. A párbeszédpanelek a rendszer betűtípusán alapulnak, és a képpontokhoz való viszonya a Win32 SDK függvényen GetDialogBaseUnitskeresztül határozható meg. Amikor egy felhasználó módosítja a Windows által használt témát, az összes párbeszédpanel automatikusan ennek megfelelően módosul. Emellett a Windows Forms támogatja az automatikus skálázást az alapértelmezett rendszer betűtípusa vagy a megjelenítési felbontás alapján. Az automatikus skálázás le is tiltható egy alkalmazásban.

Figyelmeztetés

A DPI és a betűméretezési módok tetszőleges keverékei nem támogatottak. Bár egy felhasználói vezérlőt egy módban (például DPI) skálázhat, és egy másik módban (betűtípussal) helyezheti el, probléma nélkül, de ha egy alapűrlapot egy módban és egy származtatott űrlapot egy másikban kever, az váratlan eredményekhez vezethet.

Automatikus skálázás működés közben

A Windows Forms az alábbi logikával skálázza automatikusan az űrlapokat és azok tartalmát:

  1. Tervezéskor minden ContainerControl rögzíti a skálázási módot és az aktuális felbontást a AutoScaleMode-ben, illetve a AutoScaleDimensions-ben.

  2. Futásidőben a rendszer a tényleges felbontást a CurrentAutoScaleDimensions tulajdonságban tárolja. A AutoScaleFactor tulajdonság dinamikusan kiszámítja a futási idő és a tervezési idő skálázási felbontásának arányát.

  3. Amikor az űrlap betöltődik, ha a CurrentAutoScaleDimensions és a AutoScaleDimensions értékei eltérőek, akkor meghívják a PerformAutoScale metódust a vezérlőelem és annak gyermekeinek skálázására. Ez a metódus felfüggeszti az elrendezést, és meghívja a Scale metódust a tényleges skálázás végrehajtására. Ezt követően a AutoScaleDimensions értéke frissül a fokozatos skálázás elkerülése érdekében.

  4. A PerformAutoScale automatikusan is meghívásra kerül a következő helyzetekben:

    • Válaszul a OnFontChanged eseményre, ha a méretezési mód a Font.

    • Amikor a tárolóvezérlő elrendezése újraindul, és a AutoScaleDimensions vagy AutoScaleMode tulajdonságokban változás észlelhető.

    • Ahogy a fentiekből következik, amikor egy szülő ContainerControl skálázás alatt van. Minden tárolóvezérlőelem felelős azért, hogy alárendeltjeit saját skálázási tényezőivel méretezze, nem pedig a szülőtároló skálázási tényezőivel.

  5. A gyermekvezérlők több módon is módosíthatják skálázási viselkedésüket:

    • A ScaleChildren tulajdonság felülírható annak megállapításához, hogy a gyermekvezérlők méretezhetők-e vagy sem.

    • A GetScaledBounds metódust felül lehet írni a vezérlőelem számára skálázott határok beállításához, de a skálázási logikát nem.

    • A ScaleControl metódus felülírható az aktuális vezérlő skálázási logikájának módosításához.

Lásd még