Icône dans une NSView

VeillardVeillard Membre
19:03 modifié dans API AppKit #1
Bonjour,

Voilà . J'ai une NSView dans laquelle je trace un profil de plongée. Je voudrais annoter ce profil avec une icône pour chaque évènement (ex : remontée trop rapide, alarme de palier...).
Pour l'instant j'utilise des caractères pour symboliser ces alarmes ex : "∆" pour l'alarme de palier.
Etant donné que la palette de caractères est un peu restreinte,  :-\ je voulais savoir si on pouvait coller une petite icône à  la place avec si possible la gestion de la transparence...

Place aux experts !  ;D

Réponses

  • mpergandmpergand Membre
    19:03 modifié #2
    Tu peux ajouter des vues avec la méthode addSubView. Pour les enlever utilise removeFromSuperView.

    Pour la transparence, je te conseille le gif ou le png.
  • VeillardVeillard Membre
    19:03 modifié #3
    Salut mpergand

    Merci pour l'info. Je vais voir ça de plus près, notamment comment la positionner précisément dans mon graphique.
  • cbrandtcbrandt Membre
    19:03 modifié #4
    tu peux aussi dessiner directement les icônes dans ta NSView customisée.
    dans la méthode d'affichage de ta view perso, utilise compositeToPoint:operation: sur une  nsimage:
    <br />- (void)drawRect:(NSRect)aRect<br />{<br />&nbsp; &nbsp; NSImage&nbsp; *image;<br /><br />&nbsp; &nbsp; image = [NSImage imageNamed: @&quot;alarmePalier&quot;];<br />&nbsp; &nbsp; ...<br />&nbsp; &nbsp; [image compositeToPoint: aPoint operation: NSCompositeCopy];<br />&nbsp; &nbsp; ....<br />}<br />
    


  • 19:03 modifié #5
    Je ne suis pas trop calé dans les opérations de compositing, mais il me semble que pour ajouter des images au dessus d'autres avec une gestion de la transparence, l'opération est NSCompositeSourceOver (NSCompositeCopy ne tiens pas compte de la transparence...). Il y en a pas mal et différences sont subtiles...
  • mpergandmpergand Membre
    19:03 modifié #6
    mais il me semble que pour ajouter des images au dessus d'autres avec une gestion de la transparence, l'opération est NSCompositeSourceOver


    Tu as raison, mais je ne sais pas si favouille veut afficher ces images avec un effet de transparence ou plus simplement s'il veut que ces images possèdent un fond transparent (comme les icônes)

    Effectivement cbrandt, ta méthode est plus simple que la mienne ;) et sera plus facile pour notre ami Favouille.
  • Eddy58Eddy58 Membre
    19:03 modifié #7
    Oui, en effet, avec NSCompositeCopy, l'image de destination est entièrement remplacée par l'image source. Avec NSCompositeSourceOver, l'image source doit être opaque, et elle est mise par dessus l'image destination en tenant compte de son opacité. Pour les images transparentes, personnellement j'utilise des images au format tiff, en générant leur alpha channel dans Graphic Converter. :)

    <br />[image compositeToPoint:NSMakePoint(x,y) operation:NSCompositeSourceOver];<br />
    
  • VeillardVeillard Membre
    19:03 modifié #8
    Ca y est, dès que je m'absente un peu je suis débordé  ;D
    D'abord merci à  tous pour votre contribution.
    Tu as raison, mais je ne sais pas si favouille veut afficher ces images avec un effet de transparence ou plus simplement s'il veut que ces images possèdent un fond transparent (comme les icônes)

    En ce qui concerne l'icône, je cherche à  insérer un triangle jaune sans transparence. Par contre, le contour doit être totalement transparent afin d'éviter un carré blanc autour de mon triangle...

    Je vais essayer la méthode d'Eddy avec un fichier tiff.
  • VeillardVeillard Membre
    19:03 modifié #9
    Oups j'avais oublié celle de cbrandt que j'essaie tout de suite. Je vous tiens au courant.
  • mpergandmpergand Membre
    décembre 2004 modifié #10
    Par contre, le contour doit être totalement transparent afin d'éviter un carré blanc autour de mon triangle.


    Ok, un fond transparent, donc NSCompositeCopy suffira.
    [edit] ça marche pô :'( c'est bien NSCompositeSourceOver, d'ailleurs j'ai vérifié dans mes sources, c'est toujours SourceOver que j'utilise. :P

    J'suis pas fan du format tiff, le png a été créé pour gérer la transparence et tu peux les utiliser aussi bien pour tes applis que pour le web.
  • VeillardVeillard Membre
    19:03 modifié #11
    Excellent ! ça marche !  :brule: :brule: :brule: :brule: :brule:

    Bon, j'ai essayé la méthode de cbrandt qui m'affiche bien une icône mais sans la transparence.
    Puis comme l'a suggéré Renaud, j'ai fait la petite modif et tout est OK.

    Merci à  tous 
Connectez-vous ou Inscrivez-vous pour répondre.