• 5315阅读
  • 7回复

初学者请教一个关于图象存储的问题 [复制链接]

上一主题 下一主题
离线bluefish
 
只看楼主 倒序阅读 楼主  发表于: 2006-08-14
各位论坛上的老鸟、大虾,小弟初学Qt,现在遇到一个问题,请大家帮忙
我用QPainter类的drawText方法在一个Dialog上指定的坐标上画了一个字符串,我现在想取得这个字符串的Rect,得到Rect内的数据并将这个区域存成一幅png的图片,我现在是这么做的:
  QPixmap     pixmap;
  QPainter     painter(&pixmap);
  painter.begin(&pixmap);
  painter.setPen(pen);
  painter.setFont(m_font);

  painter.drawText(100, 250, strText);
  painter.end();

    pixmap.save("pixmap.png", "PNG");

得到的图象是错误的,好像没有得到任何数据,请大家帮我想想办法...
[ 此贴被XChinux在2006-08-14 22:25重新编辑 ]
离线ediwon
只看该作者 1楼 发表于: 2006-08-14
好像是类QPicture,而不是QPixmap来存储
BLOG:
http://www.ediwon.com
-------------------------------
离线bluefish
只看该作者 2楼 发表于: 2006-08-14
QPicture我之前也用了,但是好像只能存储.PIC的图像,我要的是PNG的图像格式
离线ericguo
只看该作者 3楼 发表于: 2006-08-16
先通过QPixmap::toImage ()获得原始图像,然后通过QImage::save ( const QString & fileName, const char * format, int quality = -1 )保存试过了吗?

声明一下,我只是简单查了文档,没试过哦
离线ericguo
只看该作者 4楼 发表于: 2006-08-16
还有,QPicture存的pic格式相当于wmf,是一种只储存矢量绘图信息的Qt专有格式,所以肯定和PNG点阵格式两码事,其实只要看看文档就清楚了……
离线bluefish
只看该作者 5楼 发表于: 2006-08-16
QPixmap        pixmap(width, height);
    pixmap.fill(this, strRect.topLeft());
    QPainter    painter(&pixmap);

   painter.setPen(pen);
   painter.setFont(m_font);

   painter.drawText(0, height - descent, strText);
   painter.end();
   
   painter.begin(this);
   painter.drawPixmap(100, 250, pixmap);
   
   pixmap.save("pixmap.bmp", "BMP");
   pixmap.save("pixmap.png", "PNG");    
现在可以了,但是存储的图象没有Alpha数值,郁闷呀.....而且连Dialog的背景颜色也存进图里了,我只要strText的数据。
离线visen
只看该作者 6楼 发表于: 2008-01-07
    QPixmap image( "01.bmp" );
   
    // -----1 show the image -----
    QPainter paint;
    paint.begin( this );
    paint.setBackgroundMode(Qt::TransparentMode);
    paint.rotate(30);   
    paint.scale(2.5,2.5);   
    paint.drawPixmap( 10 , 10, image);
    paint.end();

    //-----2 save the image -----
    QPainter painter( &image );
    painter.end();
    painter.begin(this);
    image.save("pixmap.png","PNG");
人生
离线visen
只看该作者 7楼 发表于: 2008-01-07
    QPixmap pixmap("01.bmp");
    QPainter painter( &pixmap );
    painter.end();
    painter.begin(this);
    pixmap.save("pixmap.png","PNG");
人生
快速回复
限100 字节
 
上一个 下一个