Π Qt ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ 0βΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠΌΠ΅ΡΠ°. Π’Π°ΠΉΠΌΠ΅ΡΡ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° paΠ±ΠΎΡΠ°ΡΡ ΠΏΡΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ timerEvent(), ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ:
01 void Spreadsheet::timerEvent(QTimerEvent *event)
02 {
03 if(event->timerId() == myTimerId) {
04 while (step < MaxStep &&
05 !qApp->hasPendingEvents()) {
06 performStep(step);
07 ++step;
08 }
09 } else {
10 QTableWidget::timerEvent(event);
11 }
12 }
ΠΡΠ»ΠΈ ΡyΠ½ΠΊΡΠΈΡ hasPendingEvents() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, ΠΌΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Qt. ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Qt Π²ΡΠ΅Ρ ΡΠ²ΠΎΠΈΡ ΠΎΠΆΠΈΠ΄Π°ΡΡΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ.
ΠΠ»Π°Π²Π° 8. ΠΡΠ°ΡΠΈΠΊΠ° 2D ΠΈ 3D
ΠΡΠ½ΠΎΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² Qt ΡΡΠ΅Π΄ΡΡΠ² Π³ΡΠ°ΡΠΈΠΊΠΈ 2D ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ QPainter (ΡΠΈΡΠΎΠ²Π°Π»ΡΡΠΈΠΊ Qt). ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠ³ΡΡ (ΡΠΎΡΠ΅ΠΊ, Π»ΠΈΠ½ΠΈΠΉ, ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΡΠ»Π»ΠΈΠΏΡΠΎΠ², Π΄ΡΠ³, ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ΅ΠΊΡΠΎΡΠΎΠ² ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΠΈ ΠΊΡΠΈΠ²ΡΡ ΠΠ΅Π·ΡΠ΅), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠ°ΡΡ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΅ΠΊΡΡΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, QPainter ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΉ (antialiasing) ΠΏΡΠΈ Π½Π°ΡΠ΅ΡΡΠ°Π½ΠΈΠΈ ΡΠΈΠ³ΡΡ ΠΈ Π±ΡΠΊΠ² Π² ΡΠ΅ΠΊΡΡΠ΅, Π°Π»ΡΡΠ°βΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ (alpha blending), ΠΏΠ»Π°Π²Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΡΠ²Π΅ΡΠΎΠ² (gradient filling) ΠΈ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (vector paths). QPainter ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π³ΡΠ°ΡΠΈΠΊΡ 2D Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΠΎΡ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠ΅ΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ.
QPainter ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²ΡΡΠ΅ΡΡΠΈΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ°ΠΊΠΈΡ Β«ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ», ΠΊΠ°ΠΊ QWidget, QPixmap ΠΈΠ»ΠΈ QImage. QPainter ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΎΡΠΎΠ±ΡΠΌ Π²Π½Π΅ΡΠ½ΠΈΠΌ Π²ΠΈΠ΄ΠΎΠΌ ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ ΡΠ°Π±ΠΎΡΡ. ΠΠ»Π°ΡΡ QPainter ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ QPrinter Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π³ΡΠ°ΡΠΈΠΊΠΈ Π½Π° ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΠ΅Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² PDF. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΈ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π½Π½ΡΡ ΠΎΡΡΠ΅ΡΠΎΠ².
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌ QPainter ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ OpenGL. OpenGL ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ΅Π΄ΡΡΠ² 2D ΠΈ 3D. ΠΠΎΠ΄ΡΠ»Ρ QtOpenGL ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ OpenGL Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Qt.
Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ QPainter
Π§ΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΆΠ΅Ρ), ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ QPainter ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΅ΠΌΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
β¦
}
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠ³ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ QPainter Π²ΠΈΠ΄Π° drawβ¦(). ΠΠ° ΡΠΈΡ 8.1 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΈΠ· Π½ΠΈΡ .
Π ΠΈΡ. 8.1. Π§Π°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ drawβ¦() ΡΠΈΡΠΎΠ²Π°Π»ΡΡΠΈΠΊΠ° QPainter.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ QPainter Π²Π»ΠΈΡΡΡ Π½Π° ΡΠ΅ΠΆΠΈΠΌ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π’ΡΠ΅ΠΌΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΈΡΠΎΠ²Π°Π»ΡΡΠΈΠΊΠ° ΡΠ²Π»ΡΡΡΡΡ ΠΏΠ΅ΡΠΎ, ΠΊΠΈΡΡΡ ΠΈ ΡΡΠΈΡΡ:
β’ ΠΠ΅ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΡΡ Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΠΊΠΎΠ½ΡΡΡΠΎΠ² ΡΠΈΠ³ΡΡ. ΠΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²Π΅Ρ, ΡΠΎΠ»ΡΠΈΠ½Ρ, ΡΡΠΈΠ»Ρ Π»ΠΈΠ½ΠΈΠΈ, ΡΡΠΈΠ»Ρ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΈ ΠΈ ΡΡΠΈΠ»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ.
β’ ΠΠΈΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΠ³ΡΡ. ΠΠ½ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²Π΅Ρ ΠΈ ΡΡΠΈΠ»Ρ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΡΡ (ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠ°ΡΡΡ, ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ) ΠΈΠ»ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ Π³ΡΠ°Π΄ΠΈΠ΅Π½Ρ.
β’ Π¨ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ°. Π¨ΡΠΈΡΡ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ.
ΠΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ setPen(), setBrush() ΠΈ setFont(), Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² QPen, QBrush ΠΈΠ»ΠΈ QFont.
Π ΠΈΡ. 8.2. Π‘ΡΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ ΠΈ ΡΡΠΈΠ»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ.
Π ΠΈΡ. 8.3. Π‘ΡΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ°.
Π ΠΈΡ. 8.4. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² Qt ΡΡΠΈΠ»ΠΈ ΠΊΠΈΡΡΠΈ.
Π ΠΈΡ. 8.5. ΠΡΠΈΠΌΠ΅ΡΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΠ³ΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΡΠ΅ΡΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ»Π»ΠΈΠΏΡΠ°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠΈΡ. 8.5 (Π°):
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, 12, Qt::DashDotLine, Qt::RoundCap));
painter.setBrush(QBrush(Qt::green, Qt::SolidPattern));
painter.drawEllipse(80, 80, 400, 240);
ΠΡΠ·ΠΎΠ² setRenderHint() Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΠΆΠΈΠΌ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ QPainter Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΊΡΠ°ΡΠΌ ΡΠ²Π΅ΡΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΊΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΊΡΠ°Ρ ΡΠΈΠ³ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΠΈΠΊΡΠ΅Π»ΡΠΌΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΡΠ°Ρ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ²Π½ΡΠΌΠΈ Π½Π° ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΡΠ΅ΡΡΠΈΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΠΎΡΠ° ΡΠ»Π»ΠΈΠΏΡΠ°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠΈΡ. 8.5 (Π±):
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, 15, Qt::SolidLine, Qt::RoundCap, Qt::MiterJoin));
painter.setBrush(QBrush(Qt::blue, Qt::DiagCrossPattern));
painter.drawPie(80, 80, 400, 240, 60 * 16, 270 * 16);
ΠΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ drawPie() Π·Π°Π΄Π°ΡΡΡΡ Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΡΡ Π΄ΠΎΠ»ΡΡ Π³ΡΠ°Π΄ΡΡΠ°.
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π²ΡΡΠ΅ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΊΡΠΈΠ²ΠΎΠΉ ΠΠ΅Π·ΡΠ΅ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠΈΡ. 8.5 (Π²):
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
QPainterPath path;
path.moveTo(80, 320);
path.cubicTo(200, 80, 320, 80, 480, 320);
painter.setPen(QPen(Qt::black, 8));
painter.drawPath(path);
ΠΠ»Π°ΡΡ QPainterPath ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΈΠ³ΡΡΡ Π²Π΅ΠΊΡΠΎΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΈ, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ: ΠΏΡΡΠΌΡΠ΅ Π»ΠΈΠ½ΠΈΠΈ, ΡΠ»Π»ΠΈΠΏΡΡ, ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ, Π΄ΡΠ³ΠΈ, ΠΊΡΠΈΠ²ΡΠ΅ ΠΠ΅Π·ΡΠ΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΈ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΡΠΎΠ²Π°Π»ΡΡΠΈΠΊΠ° (painter paths). Π’Π°ΠΊΠΈΠ΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ½ΠΊΠ°ΠΌΠΈ Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ Π»ΡΠ±Π°Ρ ΡΠΈΠ³ΡΡΠ° ΠΈΠ»ΠΈ Π»ΡΠ±Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΠΈΠ³ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π² Π²ΠΈΠ΄Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
Π¦Π΅ΠΏΠΎΡΠΊΠ° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΡ, Π° ΠΎΠ±Π»Π°ΡΡΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΈΡΡΡΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΌ Π½Π° ΡΠΈΡ. 8.5 (Π²), ΠΌΡ Π½Π΅ Π·Π°Π΄Π°Π²Π°Π»ΠΈ ΠΊΠΈΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠΈΡΠΎΠ²Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΡΡ.
Π ΡΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΊΠΈΡΡΠΈ (Qt::SolidPattern, Qt::DiagCrossPattern ΠΈ Qt::NoBrush). Π ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΡΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΠΌ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠΌ. Π¦Π²Π΅ΡΠΎΠ²ΡΠ΅ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΠΈ ΡΠ²Π΅ΡΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅ΠΉ ΡΠ³Π»Π°ΠΆΠ΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ²Π΅ΡΠ°ΠΌΠΈ. ΠΠ½ΠΈ ΡΠ°ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠ° ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΈΠ»Ρ Plastique ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΡ ΠΏΡΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ QPushButton.
Qt ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠΈ ΡΠΈΠΏΠ° ΡΠ²Π΅ΡΠΎΠ²ΡΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠΎΠ²: Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ, ΠΊΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈ ΡΠ°Π΄ΠΈΠ°Π»ΡΠ½ΡΠΉ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π΄ΡΡ ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅, Π² ΠΎΠ΄Π½ΠΎΠΌ Π²ΠΈΠ΄ΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π²ΡΠ΅Ρ ΡΡΠ΅Ρ ΡΠΈΠΏΠΎΠ² Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ.
Π ΠΈΡ. 8.6. ΠΠΈΡΡΠΈ QPainter Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΠΌΠΈ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ.
β’ ΠΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ Π΄Π²ΡΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΡΠ΄ΠΎΠΌ Β«ΡΠ²Π΅ΡΠΎΠ²ΡΡ ΠΎΡΠΌΠ΅ΡΠΎΠΊΒ» Π½Π° Π»ΠΈΠ½ΠΈΠΈ, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡΠ΅ΠΉ ΡΡΠΈ ΡΠΎΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ Π³ΡΠ°Π΄ΠΈΠ΅Π½Ρ Π½Π° ΡΠΈΡ. 8.6 ΡΠΎΠ·Π΄Π°Π½ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:
QLinearGradient gradient(50, 100, 300, 350);
gradient.setColorAt(0.0, Qt::white);
gradient.setColorAt(0.2, Qt::green);
gradient.setColorAt(1.0, Qt::black);
ΠΡ Π·Π°Π΄Π°Π»ΠΈ ΡΡΠΈ ΡΠ²Π΅ΡΠ° Π² ΡΡΠ΅Ρ ΡΠ°Π·Π½ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΊΠ°ΠΌΠΈ. ΠΠΎΠ·ΠΈΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ 0 ΠΈ 1, Π³Π΄Π΅ 0 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠ΅, Π° 1 β ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠ΅. Π¦Π²Π΅Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΠΈΡΡΠ΅ΡΡΡ.
β’ Π Π°Π΄ΠΈΠ°Π»ΡΠ½ΡΠ΅ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ (Ρ Ρ, ΡΡ), ΡΠ°Π΄ΠΈΡΡΠΎΠΌ r ΠΈ ΡΠΎΡΠΊΠΎΠΉ ΡΠΎΠΊΡΡΠ° (xf, yf), ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ. Π¦Π΅Π½ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ° ΠΈ ΡΠ°Π΄ΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ ΡΡΠΎΡΠΎΠ½Ρ ΠΈΠ· ΡΠΎΡΠΊΠΈ ΡΠΎΠΊΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π²Π½ΡΡΡΠΈ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠΈ.
β’ ΠΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ (Ρ Ρ, ΡΡ) ΠΈ ΡΠ³Π»ΠΎΠΌ Ξ±. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π²ΠΎΠΊΡΡΠ³ ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΠ½Π΄Π½ΠΎΠΉ ΡΡΡΠ΅Π»ΠΊΠΈ ΡΠ°ΡΠΎΠ².
ΠΠΎ ΡΠΈΡ ΠΏΠΎΡ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ ΠΏΠ΅ΡΠ°, ΠΊΠΈΡΡΠΈ ΠΈ ΡΡΠΈΡΡΠ° ΡΠΈΡΠΎΠ²Π°Π»ΡΡΠΈΠΊΠ°. QPainter ΠΈΠΌΠ΅Π΅Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π²Π»ΠΈΡΡΡΠΈΠ΅ Π½Π° ΡΠΏΠΎΡΠΎΠ± ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ³ΡΡ ΠΈ ΡΠ΅ΠΊΡΡΠ°: