• 11432阅读
  • 7回复

【提问】怎样把窗口的内容保存为图片文件? [复制链接]

上一主题 下一主题
离线m31
 
只看楼主 倒序阅读 楼主  发表于: 2005-08-27
我现在对Qt画图的原理都不太懂,我模仿里面的例子写了个画图的:
void MyFigure::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.drawText(...) ;
              painter.drawLines (...);
              //...
}
运行还可以。
问:Qt里面是怎样画图的?

另外,我想把画图的内容保存为png或bmp,jpg等图片格式,应该怎样做?

我参考例子里的 screenshot 的代码,只能用 “全屏截图” 的方式保存图片,这个方法很麻烦(有多余的内容)。我看“Qt Assistant”,内容太简单,我不懂。

请问各位高手,应该怎样做? 谢谢!
[ 此贴被XChinux在2005-08-27 11:49重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2005-08-27
可参考KDE里面的"KDE抓图"程序源代码看看人家是怎样做的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线yfy002

只看该作者 2楼 发表于: 2005-08-27
QPixmap pm(0, 0);
  p->begin(&pm); // impossible - pm.isNull();

QPixmap 保存

it's easy
我渴望平静,风却给了我涟漪
我的blog:
http://sungaoyong.cublog.cn
离线m31
只看该作者 3楼 发表于: 2005-08-29
谢谢两位!

"KDE抓图"程序源代码 在哪里? linux系统里面找不到,安装盘没有。我上网查到的只是一个很旧的版本。哪里可以得到新的源代码?kde那里有吗?

QPixmap pm(0, 0);
p->begin(&pm); // impossible - pm.isNull();
好像是错误代码啊。

可我不决得easy。我还是不懂。
离线m31
只看该作者 4楼 发表于: 2005-09-06
i have found a solution, but i don't know if it is a good one:

drawPixmap()
{
QPainter painter(pixmap);
painter.drawLine(px1, -0, px1, -10 );
//...
if(savePixmap)
pixmap->save("save.png", "PNG", -1);
}

paintEvent(QPaintEvent *)
{
QPainter painter;
painter.begin(this);
painter.drawPixmap(0,0,*pixmap);      
}

OR
paintEvent(QPaintEvent *)
{
QPainter painter(pixmap);
painter.drawLine(px1, -0, px1, -10 );
//...
if(savePixmap)
pixmap->save("save.png", "PNG", -1);
painter.end();
painter.begin(this);
painter.drawPixmap(0,0,*pixmap);      
}

i found that the QPainter::begin() is different than that in Qt3.
离线honorfight

只看该作者 5楼 发表于: 2008-09-18
QWidget::render();
离线fupeng
只看该作者 6楼 发表于: 2011-05-18
5楼好办法啊~~~
离线cycloneii

只看该作者 7楼 发表于: 2011-05-18
可以用QPixmap::grabWidget和QPixmap::grabWindow来截取制定控件或者窗口的当前显示,然后再存成文件
快速回复
限100 字节
 
上一个 下一个