- 主题:QT怎样才能把bitmap资源做出icon的效果?
话不多说,上代码:
QPixmap pix(":/Images/images/bmp180.bmp");
pix.createMaskFromColor(qRgb(192,192,192),Qt::MaskOutColor);
QPixmap pix1(16,16);
QPainter pt(&pix1);
QRect src(0,0,16,16), target(0,0,16,16);
pt.drawPixmap(target,pix,src);
QIcon aIcon;
QBitmap bitmap = pix1.createMaskFromColor(QColor(192,192,192),Qt::MaskInColor);
pix1.setMask(bitmap);
aIcon = QIcon(pix1);
ui->pushButton->setIcon(aIcon);
ui->pushButton->setMask(pix1.mask());
ui->pushButton_2->setIcon(QIcon(":/Images/images/ico128.ico"));
其中bmp180.bmp是一个以深灰色(192,192,192)为背景的bmp图片,想做成ico那种透明背景图标,
整了一堆代码,也实现不了button2的效果,是这样根本行不通,还是哪里没弄对?
--
FROM 42.245.236.*
透明度应该是通过alpha通道控制吧。你没设alpha通道的值,默认就是不透明
【 在 moonwalker 的大作中提到: 】
: 话不多说,上代码:
: QPixmap pix(":/Images/images/bmp180.bmp");
: pix.createMaskFromColor(qRgb(192,192,192),Qt::MaskOutColor);
: ...................
--
FROM 219.142.145.*
我用的bmp图片是没有alpha通道的,我的意思是想在程序里为它补上一个alpha通道,
但是不知道怎么弄。
【 在 dormouseBHU 的大作中提到: 】
: 透明度应该是通过alpha通道控制吧。你没设alpha通道的值,默认就是不透明
--
FROM 118.116.108.*
没有 alpha 通道就麻烦了,我能想到的办法是先读到QImage, 转成 RGBA32 格式,把 Alpha 通道设好,然后再转成 QPixmap。。。
【 在 moonwalker 的大作中提到: 】
: 我用的bmp图片是没有alpha通道的,我的意思是想在程序里为它补上一个alpha通道,
: 但是不知道怎么弄。
--
FROM 219.142.145.*
void QPixmap::setAlphaChannel(const QPixmap &p)
【 在 moonwalker 的大作中提到: 】
: 我用的bmp图片是没有alpha通道的,我的意思是想在程序里为它补上一个alpha通道,
: 但是不知道怎么弄。
--
FROM 219.142.145.*
查了下文档,这个函数好像已经作废了吧。
This function is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.
【 在 dormouseBHU 的大作中提到: 】
: void QPixmap::setAlphaChannel(const QPixmap &p)
:
--
FROM 118.116.108.*
你 API 是不是用错了。。有个
QImage::createAlphaMask()
正常说来,在 Qt 里面操纵图像的话,应该用 QImage
QPixmap 只具备 QImage 的部分功能,但主要为绘制而优化。在 Windows 平台底下,它可能是一个 HBITMAP 或者 HICON,渲染时较快,操纵图像反而费力。QBitmap 是专指黑白 QPixmap
看你的源代码都是 QPixmap,我没有测试,直觉上你可能弄错了。
【 在 moonwalker (漫步于太空) 的大作中提到: 】
: 话不多说,上代码:
: QPixmap pix(":/Images/images/bmp180.bmp");
: pix.createMaskFromColor(qRgb(192,192,192),Qt::MaskOutColor);
: ...................
--
修改:hgoldfish FROM 112.47.122.*
FROM 112.47.122.*
好的,我试试你的办法
【 在 hgoldfish 的大作中提到: 】
: 你 API 是不是用错了。。有个
: QImage::createAlphaMask()
: 正常说来,在 Qt 里面操纵图像的话,应该用 QImage
: ...................
--
FROM 42.245.236.*