• 4895阅读
  • 2回复

在一个widget上怎么显示两幅图片? [复制链接]

上一主题 下一主题
离线fjz007
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-05
RT,我现在是用Qpainter做的,在paintEvent里边画,
其中一幅图是要旋转平移的,已经实现了,是用坐标系变换做的,但是坐标系变换后,再去画第二幅图就....
第二幅图是要求固定的,平铺在widget做一个背景就好。
void dxf2painter::paintEvent(QPaintEvent *event)
{

QPainter painter(this);
//QPainter painter2(this);//一个paintEvent不能存在两个painter?
painter.setRenderHint(QPainter::Antialiasing,true);
double vector_x=endPoint.x()-lastPoint.x();
double vector_y=-endPoint.y()+lastPoint.y();

transform_rotate.translate(cos(rotateAngle*PI/180)*vector_x-sin(rotateAngle*PI/180)*vector_y,
          -sin(rotateAngle*PI/180)*vector_x-cos(rotateAngle*PI/180)*vector_y);
painter.setWorldTransform(transform_rotate);//由于坐标系已经变化

QPixmap y=QPixmap("E:\\FJZ\\Qtonesnap\\onesnap\\onesnap\\Resources\\1.jpg");
//painter2.drawPixmap(0,0,y);//画这个就有问题
painter.drawImage(drawPoint.x(),drawPoint.y(),image);

lastPoint=endPoint;
}


离线fjz007
只看该作者 1楼 发表于: 2011-05-05
离线roywillow

只看该作者 2楼 发表于: 2011-05-05
QPainter是个状态机,只要对其进行变换之后这个状态就会一直持续下去,直到下一次变换对其修改(不过setWorldTransform好像是可以选择变换是否累加)
如果想还原变换之前的状态,那么在变换前用一下save,变换后再restore就可以了
不知道是不是这个需求?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个