Bonjour, je souhaite ajouter une qgraphicsellipseitem semi-transparente (usage canal Alpha) sur lequel j'ai appliqué un QRadialGradient.
Est-ce possible ?
Bonjour, je souhaite ajouter une qgraphicsellipseitem semi-transparente (usage canal Alpha) sur lequel j'ai appliqué un QRadialGradient.
Est-ce possible ?
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
Si tu veux une transparence globale pour ton ellipse, tu dois pouvoir utiliser setOpacity(0.5)
Merci pour ta réponse Jbx.
Je m'en suis sorti avec QPainter (j'allais poster ma soluce mais du coup elle n'est plus d'actualité).
J'avais crée une QImage remplie via fill(Qt::transparent), fait un QPainter avec pour utiliser drawEllipse avec un QRadialGradient, je teste ta propal de suite.
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
J'ai fait des essais. Je garde ma méthode car si je place une QGraphisEllipseItem au bord de ma scene (celle-ci étant dans ce cas en partie à l'exterieur de la scene) le cercle de dessine complètement (même la partie hors scene). Après c'est peut-être solutionnable.
Voici ce que j'ai fait :
Pour illustrer ce que j explique sur l'item qui déborde, on a le même résultat en commentant painter.setPen(Qt::NoPen); et en décommentant la ligne au dessus
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 int valeur=this->scene()->height()/4; QImage img=QImage(valeur,valeur,QImage::Format_ARGB32); img.fill(Qt::transparent); QPainter painter(&img); // painter.setPen(Qt::red); painter.setPen(Qt::NoPen); QRadialGradient radialgradient(valeur/2,valeur/2,valeur,valeur/2,valeur/2); radialgradient.setColorAt(0.0,QColor(255,255,255,255)); radialgradient.setColorAt(0.4,QColor(0,0,0,0)); QBrush brosse(radialgradient); painter.setBrush(brosse); painter.drawEllipse(QRect(0,0,valeur,valeur)); QGraphicsPixmapItem *item=this->scene()->addPixmap(QPixmap::fromImage(img)); item->setPos(QPointF(point_depart.x()-valeur/2,point_depart.y()-valeur/2));
Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
Mon article sur le P2V, mon article sur le cloud
Consultez nos FAQ : Windows, Linux, Virtualisation
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager