Mon appli possède une QFrame, qui affiche un film, pour créer l'illusion d'un écran de TV cathodique, je voudrais ajouter un filtre ou une image transparente, pour donner un effet "vitre bombée"
Possible ?
exemple réel
exemple Photoshop "gloss"
![]()
Mon appli possède une QFrame, qui affiche un film, pour créer l'illusion d'un écran de TV cathodique, je voudrais ajouter un filtre ou une image transparente, pour donner un effet "vitre bombée"
Possible ?
exemple réel
exemple Photoshop "gloss"
![]()
Salut,
(Y'a un antileech sur la photo d'exemple photoshop, pour les lecteurs, un aperçu est dispo ici)
Va falloir que tu le fasses toi même cet effet.
Je m'en doutais... je pars en quete de tuto, merci.
A voir s'il n'y a pas déjà quelque chose dans la section adéquate du forum
Salut
En utilisant un QPainter sur une QPixmap et QBrush avec un gradient radiale
http://qt.developpez.com/doc/latest/qpainter.html
http://qt.developpez.com/doc/latest/qbrush.html
http://qt.developpez.com/doc/latest/qgradient.html
Wou, je viens de faire un test avec un gradient lineaire, ca rend deja pas mal du tout.
La technique est simple à résumer en fait : il faut "casser" le gradient. En gros tu assemble 2 rectangle, l'un gradienté et l'autre qui ne contient que la val maxi du gradient.
Exemple avec un gradient radiale
ps: je découvre aussi cette partie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #include <QtGui> int main(int argc,char** argv) { QApplication app(argc,argv); QImage imIn("image.png"); QImage imOut(imIn.size(),QImage::Format_RGB32); //painter pour dessiner sur l'image QPainter painter(&imOut); //dessiner l'image de depart painter.drawImage(0,0,imIn); //Creation d'un gradient radiale blanc avec une variation d'opacite QRadialGradient radialGrad(imOut.width()/2,imOut.height()/2,imOut.width()/4); radialGrad.setColorAt(0, QColor ( 255,255, 255, 255 )); radialGrad.setColorAt(1, QColor ( 255,255, 255, 0 )); painter.setBrush(radialGrad); //Dessine un rectangle sur toute l'image avec le gradient painter.drawRect(imOut.rect()); //affichage des deux images QWidget w; { QLayout * l=new QHBoxLayout; QLabel *lab1 = new QLabel; lab1->setPixmap ( QPixmap::fromImage(imIn) ); l->addWidget(lab1); QLabel *lab2 = new QLabel; lab2->setPixmap ( QPixmap::fromImage(imOut) ); l->addWidget(lab2); w.setLayout(l); } w.show(); return app.exec(); }![]()
pas mal, par contre ce n'est pas un glos ^^
pour faire un gloss tu dois avoir 2 path en gros.
voici mon mediocre début...
en remplacant le gradient par
Mais gloss c'est vague. Faudrait un exemple concret
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 QLinearGradient linearGrad(QPointF(0, 0), QPointF(0, imOut.height())); linearGrad.setColorAt(0, QColor ( 255,255, 255, 255 )); linearGrad.setColorAt(.5, QColor ( 255,255, 255, 0 )); painter.setBrush(linearGrad);
Nickel !
Gloss, pour résumer, c'est un gradient qui accélère... tu ne lui laisse pas le temps de s'estomper. Tu le coupe avant
de préférence avec une forme en trill ~
![]()
Partager