Comment effacer une image ?

fouffouf Membre
22:58 modifié dans API AppKit #1
Bon, la question est dans le titre.
Je voudrais remplir un NSBezierPath avec une NSImage. Pour cela, je crée un premier masque qui correspond à  mon path, puis un second qui correspond à  mon image, je les superpose grace à  NSCompositeSourceIn pour avoir le "vrai" masque de l'image et ensuite, je dessine l'image avec le masque dans une image en cache.
J'ai donc une NSImage de grande taille (le cache) que je souhaiterais ne pas avoir à  détruire et à  recréer à  chaque fois que le bezier path change, mais que je doit quand même effacer (la vider de tous ses pixels) avant de pouvoir redessiner par dessus. J'ai cherché mais je n'ai pas trouvé comment faire ; si vous pouviez m'aider, ca serait génial ;)

Réponses

  • CéroceCéroce Membre, Modérateur
    22:58 modifié #2
    Si la couleur de fond de ton cache est le blanc, tu pourrais dessiner un rectangle blanc qui fait la taille de ta NSImage...
  • TchouboudouTchouboudou Membre
    22:58 modifié #3
    Tu peux lui mettre une transparence complète, je crois.
  • fouffouf Membre
    juin 2007 modifié #4
    dans 1183024520:

    Si la couleur de fond de ton cache est le blanc, tu pourrais dessiner un rectangle blanc qui fait la taille de ta NSImage...

    Non, je ne peux pas faire ca car le fond de mon image n'est pas blanc mais transparent et malheureusment, cela ne marche pas lorsque j'utilise [NSColor clearColor].
    Bon, sinon, je vais essayer avec setColor:atX:y: de NSBitmapImageRep, on va bien voir ce que ca fait ;)

    [edit]
    Non, ca ne marche pas non plus a premiere vu car je n'ai pas de NSBitmapImageRep a disposition ...
  • CéroceCéroce Membre, Modérateur
    juin 2007 modifié #5
    Ah en effet, si tu as une couche alpha, c'est plus compliqué.
    La grosse artillerie qui devrait marcher:

    - Tu crées une NSBitmapImageRep
    - Tu l'ajoutes à  ta NSImage par - addRepresentation:

    Pour effacer l'image, tu effaces toi-même la bitmap renvoyée par la méthode -data de NSBitmapImageRep, en écrivant zéro partout (ou juste sur l'octet de la couche alpha, mais c'est plus compliqué et moins rapide à  mon avis).


    Bref, y'a peut-être plus simple.
  • Philippe49Philippe49 Membre
    22:58 modifié #6

    C'est cela que tu veux faire ?

    [Fichier joint supprimé par l'administrateur]
Connectez-vous ou Inscrivez-vous pour répondre.