Qt 4

Ez a dokumentum egy rendszert ismertet rajz Qt 4, és vezet közötti összehasonlítás minden egyes rajz a használt Qt Qt 3 és 4.

építészet

Qt 4 festék rendszer főként az QPainter osztályban. QPaintDevice és QPaintEngine. QPainter - egy osztály, amely elvégzi egy rajz művelet, mint például a drawLine () és drawRect (). QPaintDevice végrehajtja az eszközt, amelynek segítségével létre egy kép QPainter; QWidget és QPixmap vannak QPaintDevices. QPaintEngine felületet biztosít, hogy használják, felhívni a különböző eszközöket.

Nézzük Qt 3

A Qt 3 QPainter használt rajz a kütyü és pixmaps. (Az is lehet használni, hogy dolgozzon, hogy a nyomtató a Windows és a Mac OS X) Ha szükséges a támogató egyéb rajz eszközök, például QPrinter X11, ez történik eredő QPaintDevice és kényszerítő virtuális függvény QPaintDevice :: cmd (). Definíciója rajz eszköz, tekinteni, mint egy külső eszköz.

QPainter tudott dolgozni a külső eszközökkel, és képes átalakítani minden rajz művelethez a pereopredelnnoy cmd () függvényt. Ez lehetővé tette számunkra, hogy tetszőleges eszközöket, de ez a megközelítés van néhány hátránya, amely már foglalkozott a Qt 4 Az egyik ilyen, hogy az eszköz nem használható fel újra: a képesség, hogy felhívja a kütyü (bitmap) QPainter volt kötve a platform, amelyhez kapcsolódnak QPainter. Ezért támogatja az OpenGL típusú újrafelhasználható eszköz volt kényelmetlen és nem túl hatékony.

Ez arra ösztönzött bennünket, hogy dolgozzon ki egy új, intuitív API Qt 4.

Megvalósítása rajz Qt 4

A Qt 4 bevezettük egy absztrakt osztály QPaintEngine. Az ezen irányelv végrehajtásához osztály funkcionalitást felhívni bizonyos típusú eszközöket. Class QPaintEngine belül használt QPainter és QPaintDevice. Ez el van rejtve a felhasználói programok, ha azok felülírják a saját típusok alapján alosztályok QPaintEngine eszközök. Qt nyújt jelenleg festék motorok a következő platformok és API:

Végrehajtásához támogatást egy új rajzot, meg kell levezetni a osztályt QPaintEngine és felülírják virtuális függvények. Azt is meg kell örökölt QPaintDevice és felülírja a virtuális függvény QPaintDevice :: paintEngine (), hogy meghatározza a QPainter amely festéket motort kell használni az adott eszközt.

A fő előnye ennek a módszernek, hogy minden festmény történik egyenletesen. Ez azt jelenti, hogy támogatja az új funkciók és a standard funkciók váltak sokkal könnyebb.

Új funkciók Qt 4 Szín rendszer

gradiens ecset

A Qt 4, lehetővé vált, hogy töltse formák segítségével gradiens kefe. Gradiens szakkifejezés jelentése a továbbiakban sima átmenetet az első adott színpont egy másik szín egy második pont. A gradiens lehet meghatározni, mint az átmenet az egyik szín a másikba, vagy több mint egy kevés szín, a pozíciók amelyek meghatározott belül a gradiens régióban. Qt 4 támogatja lineáris, kúpos és radiális gradienseket.

Lineáris színátmenetek adatokkal kell két ellenőrző pont. Szerelési lineáris gradiens működnek létre QLinearGradient tárgy és a beállítás, mint egy ecsetet.

A fenti kód a következő kimenetet produkálja:

Radial színátmenetek használatával vannak megadva a középpont, sugár és a fókuszt. Beállítása sugaras színátmenet kitöltés történik létrehozásával QRadialGradient tárgy és a beállítás, mint egy ecsetet.

A fenti kód a következő kimenetet produkálja:

Kúpos gradiensek vannak megadva középpontja és a kiindulási szög. Beállítása egy kúpos gradiens kitöltés történik létrehozásával QConicalGradient tárgy és a beállítás, mint egy ecsetet.

A fenti kód a következő kimenetet produkálja:

Alpha-keverő (Alpha-Kevert) Képek

A Qt 4 végrehajtott alfa blending (Alpha-Kevert) kontúrok és a belső régiók. Szín alfa csatorna van meghatározva QColor. Alpha csatorna meghatározza a átláthatóság hatása, 0 jelenti a teljesen átlátszó szín, és a 255 jelentése teljes mértékben átlátszatlan színt. Például:

A fenti kód a következő kimenetet produkálja:

Rajz segítségével alfa keverő rendszerek támogatott Windows, Mac OS X és X11 kiterjesztés telepítése X render.

QPainter és QGLWidget

Ma már lehetőség van dolgozni QPainter a QGLWidget mintha egy normális QWidget. Ennek egyik előnye az volt, hogy az általunk használt nagy teljesítményű OpenGL legtöbb rajz műveleteket, mint például a transzformációk és bittérképes rajz.

simítás vonalak

Azon rendszerek, amelyek támogatják a natív rajz API, mi biztosítja a lehetőséget, hogy egyengessék a kontúrok grafikus primitívek.

A fenti kód a következő kimenetet produkálja:

Kisimító támogatja támaszkodva QImage minden rendszerben, kivéve X11 nélkül telepített X render.

A széles körben elterjedt használata beágyazott grafikus műveletek

A Qt festék rendszer számos beágyazott grafikák műveleteket. Ennek eredményeként számos akció hajtható végre a hardver a számítógép, amely nagyobb sebességet a program végrehajtását.

Ezek közé tartozik a natív konverzió (Mac OS X és az OpenGL), így építve a mátrix sokkal gyorsabb. Egyes tevékenységek felhívni bitmap képeket közel végrehajtás hardverrel.

rajz kontúrok

A kontúr rajz - egy tárgy, amely egy számos elemi egységek, mint például téglalap, ellipszis, vonalak és ívek. Hurok lehet használni, hogy töltse ki, elválasztás, és a levágást. A fő előnye a hagyományos áramkörök rajz rasztergrafika, hogy hozzon létre egy nem-lineáris formában, amely bármikor megváltoztatható.

Kontúrok tartalmazhatnak mind zárt alkontúrokból, mint például téglalapokat, vagy ellipsziseket, vagy nyitva van (ebben az esetben alkontúrt nem lehet tölteni).

Az alábbiakban egy példa segítségével a hurok. rajzobjektummá világoskék ecset szélessége három pixel. Először is, adjunk hozzá egy téglalap, hogy lesz egy zárt alkönyvtárat. Ezután adjunk hozzá két Bezier görbéket, és végül levonja a teljes áramkör.

A fenti kód a következő kimenetet produkálja:

Dupla pufferelés widgetek

A Qt 4, az összes alapértelmezett widget dupla pufferelés.

A korábbi verzióiban Qt kettős pufferelés már megvalósult segítségével off-screen teszi a képet, majd másolja azt a képernyőn. Például:

Most dupla pufferelés kezeli QWidget:

Dupla pufferelés alapértelmezés szerint engedélyezve van, de ki lehet kapcsolni beállításával a widget beállításait Qt :: WA_PaintOnScreen.

Toll és Ecset Transformation

A Qt 3-án a toll és az ecset nem befolyásolja transzformációs mátrix. Például ha rajzolt téglalap a toll szélessége 1, kiszámítani a képet tároló, ennek eredményeként, akkor is kap egy téglalapot vonal szélességét 1. Ez megnehezíti, hogy a műveleteket, mint a méretezés és a nagy felbontású nyomtatást.

A Qt 4 tollak és kefék alkalmazunk transzformációs mátrix.

Meg kell jegyezni, hogy ez a funkció még fejlesztés, és nem minden platformon elérhető.

Létrehozása toll kéz

A Qt 4, úgy definiálható, mint az áramkör kell tölteni. Ez lehet egy egyszínű vagy QBrush. amely lehetővé teszi, hogy meghatározza a struktúra és a gradiens töltse szöveges és kontúr.

A fenti kód a következő kimenetet produkálja:

QImage mint egy rajz eszköz

Jelentős előrelépés, mint a korábbi verziók Qt 4 létrehozni egy raszter festés motor, amely lehetővé teszi, hogy működjön együtt QImage. A raszter motor QImage támogatja az összes szolgáltatást QPainter (kontúrok aliasing, alpha blending, stb), és fel lehet használni az összes platformon.

A nagy előnye az, hogy garantálja a pontosságot a minta lejátszás bármilyen platformon.

Rajz képek olyan egyszerű, mint a rajz bármely más készülékre.

SVG megjelenítés támogatása

Scalable Vector Graphics (SVG) - a nyelv leírására kétdimenziós statikus és animált vektoros grafika. Qt támogatja a statikus alkalmassága az SVG 1.2 Tiny. alkalmazásával javított festék rendszer Qt 4 SVG-képek megjelenítéséhez bármely alosztálya QPaintDevice. mint például QWidget. QImage és QGLWidget. Az előnyök minden. Ez a megközelítés biztosítja a fejlesztők a rugalmasságot, hogy a kísérlet, és megtalálni a legjobb megoldást az adott helyzetben.

Qt 4

Mivel SVG - XML ​​alapú formátum olvasására SVG-fájlok igényel QtXml modult. Emiatt val dolgozó osztályokat SVG QtSvg található egy külön modul.

Bemutatás SVG grafikus az alkalmazás olyan egyszerű, mint megjelenítő bitkép. QSvgWidget Widget bárhol elhelyezhető a felhasználói felületen, és az új tartalmak tölthetők szükség bele. Például, hogy töltse le és megjeleníti az előre meghatározott fájl szükséges minimális erőfeszítést:

Olyan alkalmazásokhoz QSvgRenderer osztály rendelkezik egy sor eszközök megjelenítés és animáció SVG-grafika.