Est-il possible d'appliquer un ColorMatrixFilter à une zone rectangulaire d'un objet DisplayObject, en laissant le reste intact? Le DO est un conteneur, et l'utilisateur interagit avec les objets qu'il contient, donc prendre des instantanés pour changer son apparence n'est pas une option.Appliquer un filtre à une zone spécifique d'un objet DisplayObject?
Répondre
ne peut faire ... voir ceci: Apply Filter to Everything in AS3
MISE À JOUR: Comme le poste référencé explique, vous pouvez soit disposer le matériel nécessaire pour appliquer le filtre dans un récipient différent du reste, ou (et je pense que ceci est plus utile dans votre cas) mettez une bitmap au dessus de toute votre interface, et dessinez/applyFilter quand quelque chose change. Le Bitmap n'interrompra pas les événements de la souris (ce n'est pas un InteractiveObject), et vous pourrez contrôler comment, quand et quelle sous-zone de votre zone filtrée mettre à jour ... spécialement avec ColorMatrixFilter, comme il le fait n'affecte pas les pixels environnants. C'est un peu de travail à mettre en place, mais ça paye;)
Bonne chance!
Une méthode potentielle de retrait serait d'avoir deux copies de l'objet, l'une au-dessus de l'autre. L'objet supérieur doit avoir le filtre appliqué et sa propriété scrollRect doit être définie pour le masquer au rectangle que vous souhaitez. L'objet arrière montrerait alors le reste de l'objet dans sa forme inchangée.
Cela vaut la peine d'explorer - merci! Je peux voir cela fonctionner si j'ai gardé deux copies non seulement du conteneur mais aussi de sa liste d'affichage, et maintenu leurs propriétés changeantes en parallèle. Il est frustrant qu'un hack si complexe soit nécessaire lorsque vous modifiez quelques lignes dans ColorMatrixFilter. Mais Adobe a fermé le paquet de filtres à la sous-classification. –
- 1. Appliquer le filtre à tout dans AS3
- 2. appliquer une datepicker à un masque
- 3. Filtre Django versus obtenir un seul objet?
- 4. Avoir un filtre JComboBox une jtable
- 5. Comment puis-je appliquer une version spécifique du framework .net
- 6. Sérialisation de DisplayObject
- 7. Comment détecter un contact sur une zone spécifique
- 8. Comment appliquer un style gras à un mot spécifique dans un fichier Excel en utilisant Python?
- 9. Objet de moulage à une classe spécifique en IL?
- 10. Python/Twisted - Envoi à un objet socket spécifique?
- 11. Comment effacer une zone dans un objet BitmapData?
- 12. Flex: DisplayObject Singleton
- 13. Flex DisplayObject en mode plein écran
- 14. Comment afficher un seul pays ou une zone spécifique dans Google Maps à l'aide de l'API?
- 15. Comment puis-je appliquer transliterate (tr) d'Unix/Sed's/Perl à seulement une colonne spécifique?
- 16. Comment ajouter un filtre automatique à une relation avec SQLAlchemy?
- 17. Appliquer un ID à un GridView
- 18. Comment modifier modrewrite pour ne pas appliquer de règles à un dossier spécifique?
- 19. Comment puis-je appliquer un filtre aux grands-parents dans nHibernate?
- 20. Comment placer un objet textbox sur une cellule spécifique lors de l'automatisation d'Excel?
- 21. Comment appliquer une fonction à une instance IQueryable?
- 22. Comment appliquer un style à une fenêtre contextuelle de confirmation
- 23. Définir DisplayObject pour passer sur MouseEvents
- 24. Pouvez-vous lier l'élément sélectionné dans une zone de liste à un objet distinct dans WPF?
- 25. wpf/silverlight conception de filtre de zone de texte
- 26. Définir par programme un objet bean spécifique - Ressort DI
- 27. Expose un objet .net spécifique en tant que JSON
- 28. ajouter une ligne de filtre à gridview
- 29. Comment passer un objet viewmodel spécifique dans CommandParam d'un bouton?
- 30. Appliquer jQuery datepicker à plusieurs instances
Je l'ai annoté au cas où quelqu'un pense que le post référencé répond à la question. L'OP a un code qui, pour une raison ou une autre, échoue à appliquer un filtre à un conteneur et à tous ses enfants. Mais ce n'est pas mon problème - contrairement à ce que suggère cette réponse, c'est assez facile. Mon problème est que le filtre est appliqué au conteneur * whole * (et à ses enfants), et je veux seulement qu'une région soit filtrée. –
Eh bien, je pense avoir répondu à votre question: vous ne pouvez pas appliquer de filtres à une zone rectangulaire d'un DisplayObject. Le thread référencé explique en détail le fonctionnement des filtres et les solutions de contournement possibles. Je vais mettre à jour ma réponse avec une solution de contournement plus détaillée. – Cay