私が持っている QImage のアルファを変更する必要があるので、その後ろと前の他の QImage とブレンドします。これは、オンとオフをすばやく切り替える必要があります。
以前は、すべての画像を再作成し、異なるアルファ値で新しい色を与える必要がありました。しかし今は、再描画してペイントするのではなく、同じ元のイメージを保持したいと考えています。
私は今、このようにしようとしています:
QImage image;
unsigned int rgb;
for(int y=0;y<image.height();y++){
for(int x=0;x<image.width();x++){
rgb=image.pixel(x,y);
image.setPixel(x,y,qRgba(qRed(rgb),qGreen(rgb),qRed(rgb),120));
}
}
かなり予測不能な動作をしています。画像を切り替えると、色が失われたり、アルファが変更されないことがあります。また、元に戻すときにアルファが変更された場合 (アルファ 255 を 120 ではなく別の場所にハードコーディングした場合)、通常の状態には戻りません。
とにかく、これはこれを行う正しい方法のようには思えませんが、それほど難しいことではありません。アルファを変更するには、画像に対して単一の関数呼び出しが必要なようですが、まだ見つかりません。