• 13487阅读
  • 7回复

QPainter怎么在QImage上绘图? [复制链接]

上一主题 下一主题
离线jwchen08
 
只看楼主 倒序阅读 楼主  发表于: 2011-03-06
关键词: QT4图片图像
我想知道,QPainter怎么在QImage上面绘图?
我这样做
QImage *image=new QImage();
QPainter paint(image);
paint.draw(....);
好像不行啊。

还有,就是绘图只能再paintEvent()里进行吗?
离线roywillow

只看该作者 1楼 发表于: 2011-03-06
似乎绘图只能在paintEvent中做
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线kimtaikee

只看该作者 2楼 发表于: 2011-03-06
回 1楼(roywillow) 的帖子
看文档,window平台只能在paintEvent 中进行绘图操作,其他平台可以设置相应的flag Qt::WA_PaintOutsidePaintEvent 在paintEvent之外进行绘图操作

离线jwchen08
只看该作者 3楼 发表于: 2011-03-09
回 2楼(kimtaikee) 的帖子
Thank you!
离线rycstar
只看该作者 4楼 发表于: 2011-03-22
Warning: When the paintdevice is a widget, QPainter can only be used inside a paintEvent() function or in a function called by paintEvent(); that is unless the Qt::WA_PaintOutsidePaintEvent widget attribute is set. On Mac OS X and Windows, you can only paint in a paintEvent() function regardless of this attribute's setting.
离线dbzhang800

只看该作者 5楼 发表于: 2011-03-22
引用楼主jwchen08于2011-03-06 18:12发表的 QPainter怎么在QImage上绘图? :
我想知道,QPainter怎么在QImage上面绘图?
我这样做
QImage *image=new QImage();
QPainter paint(image);
paint.draw(....);
.......


这种用法没问题。问题是 你的绘图设备 QImage 有问题,没有传递任何大小信息,是一个无效的Image

而后面的回答都进入了一个误区。在paintEvent中绘图,是针对QWidget这种绘图设备来说的,概念换掉了
离线tuzanbo
只看该作者 6楼 发表于: 2011-03-23
QImage 构造要传递大小 RGB
在QImage画之前要要初始化QImage所有像素
  image=new QImage(ui->centralWidget->width()-92,ui->centralWidget->height()-62,QImage::Format_RGB32);
    QRgb value=qRgb(255,255,255);
    for(int i=0;i<ui->centralWidget->width()-92;i++){
        for(int j=0;j<ui->centralWidget->height()-62;j++){
            image->setPixel(i,j,value);
        }
    }
离线梅克斯
只看该作者 7楼 发表于: 2011-03-23
你这样写没问题.....应该是传进去的QImage的问题,你传进去的好像是无效的
快速回复
限100 字节
 
上一个 下一个