• 9560阅读
  • 10回复

请教:我这样设置图片的透明度。。出了什么问题 [复制链接]

上一主题 下一主题
离线beizidream
 

只看楼主 倒序阅读 楼主  发表于: 2010-01-09
大家好,我希望把图片设置成半透明的

参考资料
http://techbase.kde.org/Development/Tutorials/Graphics/Performance
http://www.qtcn.org/bbs/read.php?tid=23583

代码如下:
#include <QApplication>
#include <QPixmap>
#include <QPainter>
#include <QLabel>


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QPixmap  pixmap(":/imagess/house.png");

    QPixmap temp(pixmap.width(), pixmap.height());
    temp.fill(Qt::transparent);

    QPainter p(&pixmap);
    p.setCompositionMode(QPainter::CompositionMode_Source);
    p.drawPixmap(0, 0, pixmap);
    p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
    p.fillRect(temp.rect(), QColor(0, 0, 0, 0.5));
    p.end();

    pixmap = temp;

    QLabel *label = new QLabel;
    label->setPixmap(pixmap);
    label->show();
    return app.exec();
}

程序运行后,没有显示图片,不知道怎么了,求高手指点。
谢谢!!!!
离线午小夜

只看该作者 1楼 发表于: 2010-01-09
rgba 都是整数吧?
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线2nd090215
只看该作者 2楼 发表于: 2010-01-10
关注,
离线beizidream

只看该作者 3楼 发表于: 2010-01-10
引用第1楼午小夜于2010-01-09 22:24发表的  :
rgba 都是整数吧?

谢谢,
    文档里面确实不是小数,我修改以后并没有什么改变。。

程序运行后还有错误,应该是QPainter的原因吧:

QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::setCompositionMode: Painter not active
QPainter::setCompositionMode: Painter not active
QPainter::end: Painter not active, aborted

不知道怎么回事,好像并没有把pixmap 画出来
离线yb824
只看该作者 4楼 发表于: 2010-01-11
QPainter p(&pixmap); //应该是temp吧
离线xinqingfly

只看该作者 5楼 发表于: 2010-01-11
QPainter p创建有问题,看看是不是pixmap的图片没加载成功
菜鸟也是鸟
离线beizidream

只看该作者 6楼 发表于: 2010-01-11
谢谢大家,我想我应该没有加载成功图片!

我用下面的代码试了一下没有显示出来图片

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPixmap  pixmap(":/images/a.png");

    QLabel  *showLabel = new QLabel();
    showLabel->setPixmap(pixmap);
    showLabel->show();

    return app.exec();
}

郁闷啊,明明QT文档上面就是这样用的,我就显示不了图片,就显示了一个空白的窗口。(我已经把a.png加入到资源文件了!!放到了程序目录下的images文件夹内)

请大家给点建议吧,图片都显示不出来,更别说透明度了。

谢谢了!
[ 此帖被beizidream在2010-01-11 12:42重新编辑 ]
离线yb824
只看该作者 7楼 发表于: 2010-01-11
资源文件是怎么写的
离线beizidream

只看该作者 8楼 发表于: 2010-01-12
假如资源文件名为 good.qrc

在工程文件中加入 RESOURCES += good.qrc

资源文件good.qrc

<RCC>
    <qresource prefix="/pic/house">                    //自己取的名字                
        <file>images/a.png</file>                                //图片
     ..........                                                                 //其他图片等
    </qresource>
</RCC>
离线shiziyang

只看该作者 9楼 发表于: 2011-04-13
貌似用资源路径时要把prefix也写上去吧?
:/pic/house/images/a.png
或者把prefix名字改成空
离线quser
只看该作者 10楼 发表于: 2011-04-20
回 9楼(shiziyang) 的帖子
源文件的目录里放一个images 文件夹 里面放置你的a.png 图片
然后添加资源,建一个前缀 /  然后再添加图片a.png
引用图片的时候路径这么填:/images/a.png   一定要注意大小写!
快速回复
限100 字节
 
上一个 下一个