LINUX.ORG.RU

qt2gif


0

0

Qt-программа демонстрирует изменяющуюся графику. Можно ли анимацию отображаемую Qt- прогой сохранить в gif-файл?
Для рисования в Qt использую свой виджет:

class Graph : public QWidget{
Q_OBJECT
public:
Graph( QWidget *parent=0, const char *name=0 );
....
};

рисую на QPainter p;

void Graph::paintEvent( QPaintEvent * event) {
QPixmap pixmap;
QRect rect = event->rect();
pixmap.resize(rect.size().expandedTo(pixmap.size()));
pixmap.fill("#FBFFF3");
QPainter p(&pixmap,this);
....
bitBlt(this, event->rect().topLeft(), &pixmap);
}

(Pixmap для двойной буферизации.)

anonymous

Если сохранить в gif невозможно то как сохранить на диске серию картинок отображаемых на виджете в каком-нибуть открытом формате.

anonymous
()
Ответ на: комментарий от cvv

Поробую объяснить что мне надо:

1. Нарисовал я картинку на виджете Graph.
2. Сохранил его в файл, напрмер, pic1.bmp
3. Нарисовал следующую картинку на виджете Graph.
4. Сохранил его в файл, напрмер, pic2.bmp
...
loop

То есть нужно найти команду которая сохранит текущую картинку
отображаемую виджетом Graph из объекта QPixmap pixmap;
в графический файл. Но метода типа pixmap.saveToFile("pic.bmp")
не нашел. /подводят знания english ;(/

А еще лучше получить GIF добавляя на кажном шаге кадр в файл анимации pic.gif. То есть совсем круто было бы pixmap.addToFile("pic.gif")

anonymous
()
Ответ на: комментарий от anonymous

я с qt не знаком. потому всё что могу посоветовать: получить XID Х-окна виджета и далее иксовыми функциями сохранять в файл. по крайней мере на gtk такое изврещение реализовать не сложно

cvv ★★★★★
()
Ответ на: комментарий от anonymous

pixmap.save?


bool QPixmap::save ( const QString & fileName, const char * format, int quality = -1 ) const
Saves the pixmap to the file fileName using the image file format format and a quality factor quality. quality must be in the range [0,100] or -1. Specify 0 to obtain small compressed files, 100 for large uncompressed files, and -1 to use the default settings. Returns TRUE if successful; otherwise returns FALSE.
See also load(), loadFromData(), imageFormat(), QImage::save(), and QImageIO.
Example: qmag/qmag.cpp.
bool QPixmap::save ( QIODevice * device, const char * format, int quality = -1 ) const
This is an overloaded member function, provided for convenience. It behaves essentially like the above function.
This function writes a QPixmap to the QIODevice, device. This can be used, for example, to save a pixmap directly into a QByteArray:
QPixmap pixmap;
QByteArray ba;
QBuffer buffer( ba );
buffer.open( IO_WriteOnly );
pixmap.save( &buffer, "PNG" ); // writes pixmap into ba in PNG format

Evil_And ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.