Qt - przykład rysowania
Transkrypt
Qt - przykład rysowania
Qt - przykład rysowania Bogdan Kreczmer ZPCiR ICT PWR pokój 307 budynek C3 [email protected] Copyright c 2003 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udost˛epiony pod warunkiem wykorzystania wyłacznie ˛ do własnych prywatnych potrzeb i może on by ć kopiowany wyłacznie ˛ w całości, razem z ninijesza˛ strona˛ tytułowa. ˛ Odrysowywanie class KlasaKontrolki : public QWidget { public: KlasaKontrolki( QWidget rodzic=0, const char nazwa_id=0 ); }; class PoleRysowania: public QWidget { protected: int _Nr; void paintEvent( QPaintEvent ) { QPainter Rysownik( this ); Rysownik.drawText( 20, 30, "Odrysowanie nr: " + QString::number(_Nr++) ); } public: PoleRysowania( QWidget rodzic=0, const char nazwa=0 ); QWidget(rodzic, nazwa) , _Nr(0) { setBackgroundColor( white ); } }; KlasaKontrolki::KlasaKontrolki( QWidget parent=0, const char name=0 ) { QPushButton Przycisk = new QPushButton( "Odrysuj", this ); Przycisk- move( 25, 10 ); Przycisk- resize( 90, 40 ); Przycisk- setFont( QFont( "Times", 18, QFont::Bold ) ); PoleRysowania PoleRys = new PoleRysowania(this ); PoleRys- move( 130, 10 ); PoleRys- resize( 210, 60 ); PoleRys- setFont( Przycisk- font() ); connect( Przycisk, SIGNAL(clicked()), PoleRys, SLOT(update()) ); } Odrysowywanie c.d. void PoleRysowania::paintEvent( QPaintEvent ) { QPainter Rysownik( this ); Rysownik.setBrush( QBrush(green) ); Rysownik.rotate(-10); Rysownik.drawText( 10, 50, "Odrysowanie nr: " + QString::number(_Nr++)); Rysownik.drawEllipse(20,55,80,20); Rysownik.setPen( QPen(black,4) ); Rysownik.drawLine(10,60,120,90); QImage Ikonka("term.gif"); Rysownik.drawImage(180,40,Ikonka); Rysownik.rotate(10); Rysownik.drawImage(140,45,Ikonka); } Rysowanie na mapie bitowej PoleRysowania::PoleRysowania( QWidget rodzic=0, const char nazwa=0 ): QWidget(rodzic, nazwa, WRepaintNoErase ), _Numer(0) { setBackgroundColor( white ); } void PoleRysowania::paintEvent( QPaintEvent ) { QPixmap MapaBitowa( width(), height() ); MapaBitowa.fill( backgroundColor() ); QPainter Rysownik( &MapaBitowa ); ... bitBlt( this , 0, 0, &MapaBitowa, 0, 0, -1, -1 ); }