• 8541阅读
  • 9回复

Qlabel、QPixmap和QWMatrix问题 [复制链接]

上一主题 下一主题
离线帅坤
 
只看楼主 正序阅读 楼主  发表于: 2010-06-02
我用的是QT2.
目的:向用setPixmap的方式创建一个特定图形的QLabel。
我创建了一个QPixmap对象,并通过QPainter在QPixmap上绘制了一个绿色实心三角形,QPixmap背景为黑色。然后通过QWMatrix对这个QPixmap进行旋转rotate,再重新对QLabel进行setPixmap,可是旋转后的新QPixmap在大于原有QPixmap的部分都是白色的,可是我窗体的背景要求是黑色,感觉像是新的QPixmap的背景色没有设定的问题,默认为白色,可是我进行fill( black )操作后依然不起作用。又感觉像是QWMatrix旋转的问题。但不知道怎么修改。
请大家帮帮忙~
离线isa086
只看该作者 9楼 发表于: 2012-03-07
用QTransform t.rotate();设旋转角度,再QPixma p.transform(t);
离线帅坤
只看该作者 8楼 发表于: 2010-06-03
用了一种不是很完美的方式解决了,暂时没问题了,可能留有后患。
不过还是希望大家能给出个好点子~
离线帅坤
只看该作者 7楼 发表于: 2010-06-03
benbenmajia同学去哪了?问题还没有解决,帮帮忙~
离线帅坤
只看该作者 6楼 发表于: 2010-06-02
???谁帮忙解决一下~
离线帅坤
只看该作者 5楼 发表于: 2010-06-02
回 1楼(benbenmajia) 的帖子
对了QLabel的宽和高是24*24
结果就是QLabel中显示的是24*24内有一个白底的18*18的pixmap_2,而pixmap_2中显示的是一个旋转了一定角度的12*16的pixmap_1。但奇怪的是pixmap_1是黑色背景上面有一个绿色三角形。
为什么pixmap_2是白色背景呢?
离线帅坤
只看该作者 4楼 发表于: 2010-06-02
能不能有其他好办法
我就是想显示一个绿色三角样式的标签,而且能够实现对这个三角形进行旋转、缩放等操作,且它能够接收鼠标点击事件并作处理,也就是可以安装事件过滤器installEventFilter。不知道有没有其他方法啊?
离线帅坤
只看该作者 3楼 发表于: 2010-06-02
回 1楼(benbenmajia) 的帖子
程序大概是这样的:
//定义了两个QPixmap指针
QPixmap* pixmap_1;
QPixmap* pixmap_2;

//实例化
pixmap_1 = new QPixmap( 12, 16 );
pixmap_1->fill( black );
pixmap_2 = new QPixmap( 18, 18 );
pixmap_2->fill( black );

//在pixmap_1上绘制绿色实心三角形
painter = new QPainter;
painter->begin( pixmap_1 );
painter->setPen( QPen( green ) );
painter->setBrush( QBrush( green ) );
painter->drawPolygon( a, FALSE, 0, -1 );  //a为三角形的三个点
painter->end();

//通过QWMatrix对pixmap_1进行旋转
QWMatrix matrix;
matrix.rotate( rand()%360 );
*pixmap_2 = pixmap_1->xForm( matrix );

//通过标签显示pixmap
QLabel label_1.setPixmap( *pixmap_2 );
离线帅坤
只看该作者 2楼 发表于: 2010-06-02
回 1楼(benbenmajia) 的帖子
旋转之前是12*16的,旋转之后是18*18的。
离线benbenmajia

只看该作者 1楼 发表于: 2010-06-02
你的这个矩形框的height和width呢?旋转之后的height和width呢?
安然.....
快速回复
限100 字节
 
上一个 下一个