IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Transparence : facealpha et axe y


Sujet :

MATLAB

  1. #1
    Membre averti
    Homme Profil pro
    Assistant chercheur en Neuroimagerie
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Norvège

    Informations professionnelles :
    Activité : Assistant chercheur en Neuroimagerie

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Par défaut Transparence : facealpha et axe y
    Bonjour développeurs,

    Je suis face à un problème lors de l'utilisation de la propriété 'facealpha' de figure lors du traçage de plusieurs histogrammes. Lorsque 'facealpha' n'est pas appelé, les histogrammes et les axes sont tracés correctement :
    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
     
    %
    nbins=1024;
    %
    figure1 = figure('Color',[1 1 1]);
    %
    ax=axes('Parent',figure1);
    %
    origWM=origPET.vol.*wmBin.vol;
    histnorm(ax,origWM(wmBin.vol(:)==1),nbins);
    hold on
    %
    origGM=origPET.vol.*gmBin.vol;
    histnorm(ax,origGM(origGM>0),nbins);
    hold off
    %
    htmp=findobj(gca,'Type','patch');
    set(htmp(1),'FaceColor','k','EdgeColor','none');
    set(htmp(2),'FaceColor','r','EdgeColor','none');
    %
    xlim([0 2.5]);
    %
    set(ax,'LineWidth',1)
    set(ax,'TickDir','out')
    set(ax,'Box','off','FontSize',12,'FontName','Times')
    %
    Par contre, lorsque je modifie le précédent code en introduisant la propriété 'facealpha' comme suit, l'axe y devient transparent (mais les "tick" sont toujours visibles) et semble aussi être légèrement décalé vers le bas (visible grâce au "tick") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    set(htmp(1),'FaceColor','k','EdgeColor','none','facealpha',0.6);
    set(htmp(2),'FaceColor','r','EdgeColor','none','facealpha',0.6);
    ...
    J'ai essayé quelques modifications sans succès. Si vous connaissez l'origine de ce changement, ou bien une autre manière d'introduire de la transparence avec des histogrammes, je suis preneur.

    Cordialement,

    Christopher

  2. #2
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    Citation Envoyé par tobalito Voir le message
    Si vous connaissez l'origine de ce changement, ou bien une autre manière d'introduire de la transparence avec des histogrammes, je suis preneur.

    Cordialement,

    Christopher

    T'as de la chance j'ai la solution . Pour reproduire ce bug , j'ai pris l'exemple de la fonction hist .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    figure
    x = -4:0.1:4;
    y = randn(10000,1);
     
    hist(y,x) ;
    set(findobj('type','patch','parent',gca),'facecolor','r','facealpha',0.2)
    title('bug !!')
    En effet l'axe y disparrait. ça sent le bug Opengl à plein nez testons pour voir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    figure
    hist(y,x) ;
    set(findobj('type','patch','parent',gca),'facecolor','g','facealpha',0.2)
    opengl('software')
    set(gcf,'renderer','opengl')
    opengl('OpenGLEraseModeBug',1)
    title('ça marche !')
    bon là j'ai mis toutes les chances de mon côté avec ces 3 lignes en gras , peut être que tu n’auras pas besoin des 3...

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Par défaut
    Bizarre, je n'arrive pas à reproduire cette erreur. Est-ce que ca ne pourrait pas venir de la version de matlab ? Ou alors Opengl fonctionne chez moi ?

    En tout cas, avec les deux graphes, j'ai bien l'axe des y visible. Il y a par contre un léger décalage vers le bas de l'axe...

    edit:
    version d'opengl : 1.5 Mesa 6.0.1
    version matlab : MATLAB Version 7.1.0.183 (R14) Service Pack 3
    Images attachées Images attachées  

  4. #4
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    il faudrait en effet comparer les résultats de suivant les releases, et les OS , les valeurs différent

Discussions similaires

  1. comment faire un background transparent?
    Par guigui1005 dans le forum Composants
    Réponses: 5
    Dernier message: 17/05/2012, 21h45
  2. [Composant] La transparence
    Par Nuts07 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/05/2003, 14h51
  3. Comment rendre transparent le tour d un icone
    Par NeoRonin dans le forum Composants VCL
    Réponses: 7
    Dernier message: 03/03/2003, 01h40
  4. Réponses: 1
    Dernier message: 23/02/2003, 06h22
  5. ouverture d'une form en fondu transparent
    Par nicholz dans le forum Composants VCL
    Réponses: 9
    Dernier message: 08/01/2003, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo