die Aufgabe besteht darin, eine Sequenz von Bildern jeweils einzulesen, Linien einzumalen und darzustellen. Und das soll möglichst schnell sein - letztendlich unter 15ms pro Schleife. Ein erster Versuch damit war sehr ernüchternd, was die Geschwindigkeit betrifft:
Code: Alles auswählen
...
bild = new QPixmap(768, 576);
QPainter painter; // zum Malen der Linien
for (il=0; il<ANZ_LOOPS; il++) {
bnr = 100 + (il % 10); // unabhängig von ANZ_LOOPS werden immer nur 10 Bilder zyklisch dargestellt
fname = "testbild_" + QString::number(bnr) + ".pgm";
bild->load(fname); // das Bild in der Datei ist nur 256x256 Pixel groß
painter.begin(bild);
painter.setPen(Qt::green);
for (i=0; i<ANZ_SLINES; i++)
painter.drawLine(slines[i].anfx+il,slines[i].anfy, slines[i].endx, slines[i].endy);
painter.setPen(Qt::red);
for (i=0; i<ANZ_MLINES; i++)
painter.drawLine(mlines[i].anfx+il, mlines[i].anfy, mlines[i].endx, mlines[i].endy);
painter.end();
ZeichenBox->setPixmap(*bild); // ZeichenBox ist ein QLabel zur Darstellung
QApplication::processEvents(); // damit alle Bilder zu sehen sind
}2. Ich lese ein 256x256 großes Bild in ein 768x576 großes Pixmap und würde erwarten, dass nur ein kleines Bild links oben zu sehen ist. Tatsächlich aber füllt das eingelesene Bild die ganze Fläche aus. Wie kann ich erreichen, dass das eingelesene Bild genau so groß dargestellt wird, wie es ist?
Mein System: HP Pavillon 3237, Athlon64 3200+ , GeForce 6200, Suse Linux 10.1, Eclipse-Europa