2

元のアイコン画像から(無効状態に余分な画像を使用せずに)、アイコンを無効にした状態の半透明アイコン Pixmap を動的に作成したいと考えています。

これには 5 分かかると思っていました。QPainter を作成し、不透明度を 0.5 程度に設定して、通常の Pixmap をそこに描画するだけです。

問題は、QPainter が (205, 205, 205) に設定された背景で始まるように見え、完全に透明にするために投げることができないことです。

これは、標準アイコンに使用しているコードです。

icon.addPixmap(QPixmap(filename));

これは、無効状態の透過バージョンを作成するためにこれまでに試みたものです。

QPixmap normalPixmap(filename);
QPixmap disabledPixmap(normalPixmap.size());
QPainter p(&disabledPixmap);

p.setBackgroundMode(Qt::TransparentMode);
p.setBackground(QBrush(Qt::transparent));
p.eraseRect(normalPixmap.rect());
// (...) I've tried Composition modes and a lot of other stuff here, with no success

p.setOpacity(0.5);
p.drawPixmap(0, 0, normalPixmap);

p.end();
icon.addPixmap(disabledPixmap, QIcon::Disabled, QIcon::On);

上記のコードから得られる結果は次のとおりです。

ここに画像の説明を入力

4

2 に答える 2

5

試す:

disabledPixmap.fill(Qt::transparent);

QPainter を作成する前に

于 2012-06-01T17:46:22.560 に答える
0

画像を disabledPixmap に描画した後、次のコードを試してください。

// Make the bitmap partially transparent by setting the alpha channel of all pixels
painter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
painter.fillRect(thePixmap.rect(), QColor(255,255,255,150));
于 2012-06-01T00:06:34.947 に答える