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 );
}

Podobne dokumenty