Rajz segítségével qpainter - qt 4 gui programozás
Rajzolás megkezdéséhez a festék eszköz (jellemzően a widgetet), akkor hozzon létre egy QPainter objektumot, és átadja azt az eszközt mutató. Például:
void MyWidget :: paintEvent (QPaintEvent * esemény)
Tudjuk felhívni a különböző formák segítségével QPainter funkciók fajta felhívni ... (). A 8.1 ábra mutatja a legfontosabbakat.
Ábra. 8.1. A gyakran használt döntetlen ... () függvények előadója QPainter.
QPainter beállításai hatással vannak a rajz módot. Néhány ezek közül a készülékre telepített beállításokat, és mások inicializálni az alapértelmezett értékeket. A három fő festő beállítások a toll, ecset, és font:
• A stylus megjelenítésére egyenes vonalak és felvázolja a formák. Ez a szín, vastagság, vonal stílus, stílus és vonallezárást csatlakozó vezetékeket.
• kefe egy sablont használunk, hogy kitöltse a geometriai formák. Ez általában egy színt és stílust, de lehet egy textúra (bittérképes ismételt végtelenül) vagy színátmenet.
• A használt betűtípus a szöveg megjelenítésére. Betűtípus számos attribútumok, beleértve a nevét és méretét.
Ezeket a beállításokat bármikor módosítható a setPen () függvényekkel, setBrush () és setFont (), felhív QPen tárgyak, QBrush vagy QFont.
Ábra. 8.2. Stílusok véget vonalak és csatlakozó stílusokat.
Ábra. 8.3. Pen stílus.
Ábra. 8.4. Meghatározott Qt kefe stílusok.
Ábra. 8.5. Példák a geometriai formák.
Nézzünk néhány példát. Alul van a kód rajz az ellipszis ábrán látható. 8.5 (a):
painter.setPen (QPen (Qt :: fekete, 12, Qt :: DashDotLine, Qt :: RoundCap));
painter.drawEllipse (80, 80, 400, 240);
setRenderHint () hívás üzemmód magában simítását vonalak jelzik annak szükségességét, hogy QPainter szélei színek változó intenzitással, hogy csökkentse a vizuális torzítás, amely általában észrevehető, ha peremalakokat képviselt pixel. Ennek eredményeként, a szélek tartják simább platformok és eszközök, amelyek támogatják ezt a funkciót.
Alul van a kód rajz az ágazat ellipszis ábrán látható. 8.5 (b):
painter.setPen (QPen (Qt :: fekete, 15, Qt :: SolidLine, Qt :: RoundCap, Qt :: MiterJoin));
painter.drawPie (80, 80, 400, 240, 60 * 16 270 * 16);
Az utolsó két érv drawPie () függvények meghatározott sixteenths fokot.
Az alábbiakban a programkód rajz harmadfokú Bezier görbével. 8,5 (c):
path.cubicTo (200, 80, 320, 80, 480, 320);
Osztályú QPainterPath meghatározhatja tetszőleges vektorgrafikus alakzatok, egymáshoz csatlakoztatva alapvető grafikai elemek: egyenes vonalak, ellipszisek, sokszögek, íveket, Bezier görbéket a második és a harmadik rend és egyéb grafikus elemek festő-lánc (festő utak). Az ilyen láncok fejezte be az általános rajzok, abban az értelemben, hogy minden szám vagy kombinált formájú lehet reprezentálni egy sor grafikai elemekkel.
Lánc grafikai elemek a kontúrt, és a területen belül a vázlatot lehet tölteni bármilyen ecsettel. A bemutatott példában látható. 8.5 (c), mi nem kérni az ecset, így csak a vázlattal.
A három fenti példák használja a beépített ecset mintázatok (Qt :: SolidPattern, Qt :: DiagCrossPattern és Qt :: NoBrush). Modern alkalmazásoknál, gradiens töltőanyagok egy népszerű alternatív homogén aggregátum. Színátmenetek alapulnak szín interpoláció, amely sima átmenet a két vagy több színben. Gyakran használják, hogy a hatást a háromdimenziós képek, például Plastique stílus a színátmenetek szín, ha játszik QPushButton gomb.
Qt támogatja háromféle színátmenetek: lineáris, sugár és kúpos. A példában a sütő időzítő, amely biztosítja a következő részben, az egyik modul kombinációját használja mindhárom színátmenetek fénykép meg reális.
Ábra. 8.6. QPainter kefe színátmenetek.
• Lineáris színátmenetek által meghatározott két ellenőrzési pontot és egy sor „színfoltok” a vonalon összekötő ezeket a pontokat. Például, lineáris gradiens látható. 8.6 létre a következő kódot:
QLinearGradient gradiens (50, 100, 300, 350);
Megkérdeztük a három szín három különböző helyzetben a két ellenőrző pontokon. A pozíciók vannak ábrázolva lebegőpontos számok 0 és 1 közötti, ahol a 0 érték felel meg az első ellenőrző pont, és 1 - utolsó ellenőrzőpont. A szín interpolált ezen pozíciók között.
• Körkörös színátmenet által meghatározott középpont (xc. Yc), sugara r és a fókuszpont (xf. Yf), amely kiegészíti a színes címkék. A középpont és a kör sugarát határozzuk meg. A színváltozás minden irányban a fókuszpont, amely egybeesik a középpont, vagy lehet bármely más pontján körön belül.
• Kúpos színátmenetek által meghatározott középpont (xc. Yc) és a szög. A színek elterjedt egy középpont körül mozgás, mint a használt óra.
Eddig már beszéltünk beállításával toll, ecset és festő font. QPainter van más beállításokat, amelyek befolyásolják az utat a rajz formák, szöveg:
• Kenje meg a háttér (háttér kefe) feltöltésére használható a háttérben geometriai formák (azaz a kefe minta), szöveges vagy bittérképes amikor a háttérben megjelenítési mód van beállítva, hogy a Qt :: OpaqueMode (nem transzparens mód) (alapértelmezett mód Qt :: TransparentMode - átlátszó).
• kiindulási pont ecset (kefe eredetű) meghatározza a kezdőpont kijelző mintát ecsettel, mint egy általánosan használt bal felső sarokban pont a widget.
• határokat rajzterületet (clip régió) meghatározzuk a rajz területén a készüléket. rajzműveletek, amelyek túlmutatnak a területen, figyelmen kívül hagyja.
• megjelenítési területen, az ablak és az egyetemes transzformációs mátrix (ablakon, ablak és a világ matfix) meghatározza az átviteli módot QPainter logikai koordinátákat fizikai koordinátáit a rajz eszköz. Alapértelmezésben a rendszer logikai és fizikai koordinátái megegyeznek. Koordináta rendszerek tárgyalását a következő részben.
• Mode készítmény (összetétel mód) meghatározza a kölcsönhatás módja az új kiadási pixel a pixel már jelen lévő rajz eszköz. Az alapértelmezett a «forrás felett» mód, ahol az új képpontokat rajzolt a tetején a meglévőket. Ez az üzemmód csak akkor támogatott speciális eszközöket, és úgy ítélték meg később ebben a fejezetben.
Egy adott időben meg tudjuk menteni a verem aktuális állapotáról, a festő, amelyben Save () függvényt, és visszaállíthatja hívja helyreállítása () függvényt. Ez akkor lehet hasznos, ha azt szeretné, hogy ideiglenesen változtatni néhány festő beállításokat és paramétereket, majd vissza őket a korábbi értékeket, mint látni fogjuk a következő fejezetben.