2012-06-20 24 views
5

Il mio programma genera 3 immagini diverse e mi piacerebbe combinarle utilizzando alcune impostazioni di opacità.Miscelazione di due immagini diverse in Qt

Per prima cosa ho l'immagine raw, che ho già convertito in una QPixmap per visualizzarla in un QGraphicsView.

First Image.

Quindi con questa immagine eseguo alcuni calcoli e genera un QImage perché ho bisogno di un accesso di base ai pixel, aggiungo anche una legenda.

Second Image.

Quello che mi piacerebbe fare è essere in grado di fondere le due immagini pur essendo in grado di modificare l'opacità. Non ho gli strumenti per mostrare un esempio, dovrebbe assomigliare a questo:

Third image

Ma con l'immagine dei dati mescolato con l'opacità e la prima immagine. Inoltre vorrei che la leggenda fosse visibile al 100%. Posso creare un QImage diverso per la legenda se è necessario.

Inoltre so esattamente quale pixel deve essere considerato trasparente anziché bianco se si tratta di questo.

In futuro vorrei per regolare l'opacità solo con un cursore quindi penso che sarebbe meglio se ci fosse una soluzione che non ha comportato il calcolo di una nuova immagine ogni volta ...

Qualsiasi vantaggio sarebbe apprezzato ...

risposta

3

È possibile utilizzare QGraphicsPixmapItem :: setOpacity per impostare il valore di fusione alfa nell'intervallo 0.0 ... 1.0 per l'immagine di sovrapposizione e disporre di elementi grafici separati per lo sfondo e il primo piano.

Se è effettivamente necessario generare una pixmap con l'immagine blended, è possibile utilizzare setOpacity su QPainter prima di disegnare la pixmap su di esso.

+0

Ho fatto quello che hai suggerito, ma ho un ultimo problema, anche il pixel bianco della mia QImage è mescolato, sai come evitarlo? Vorrei che il pixel bianco agisse come se fosse trasparente. Una foto di quello che ho adesso: [Immagine] (http: // imgur.com/vEpxI) – Leo

+0

Perché non si mette l'immagine grezza sulla parte superiore dell'immagine con la legenda e si modifica l'opacità dell'immagine grezza? O ci sono elementi nell'immagine grezza che devono essere impostati trasparenti? In tal caso dovrai modificare l'immagine non elaborata per impostare il valore alfa di questi pixel su 0. – Pete

+0

Questo è quello che ho fatto ma ho ancora lo stesso problema: [come questo] (http://imgur.com/a6qWk). Cambio l'opacità dell'immagine grezza e metto sotto la legenda e la visualizzazione dei dati, ma il bianco dell'ultimo si fonde ancora con l'immagine grezza. – Leo

0

C'è un tipo QImage che supporta un canale alfa QImage :: Format_ARGB32_Premultiplied che visualizzerà le due immagini con un'opacità controllata dall'alfa - semplicemente disegna i due QImages sopra l'inizio di ogni altro

Ma è premoltiplicato quindi è necessario regolare tutti i pixel se si cambia A

+0

Dovendo regolare tutti i pixel ogni volta che cambio A plus dover convertire la prima QPixmap in una QImage mi infastidisce davvero, mi piacerebbe trovare qualcosa di un po 'più efficiente, ma scaverò la tua idea se non indosso trovo qualcos'altro – Leo

+0

Non è necessario convertire in una pixmap, la visualizzazione di QImage viene comunque eseguita in HW. –

+0

Non so che cos'è l'HW, quindi potrei non comprendere appieno la tua frase ma di quale pixmap stai parlando? – Leo

Problemi correlati