Je souhaite donc faire glisser un objet d'une source vers plusieurs destinations potentielles. Lorsque l'objet est sur chaque destination, je veux qu'il se transforme en une image différente. Existe-t-il un moyen simple de le faire du point de vue de NSDragSource?Comment modifier une image glisser-déposer à mi-traînée?
Répondre
Il n'y a aucun moyen de le faire en utilisant uniquement les API de source de glissement.
Si vous regardez Interface Builder, il fait quelque chose de similaire à ce que vous voulez. Lorsque vous faites glisser un bouton hors de la bibliothèque, le bouton s'anime au milieu du glisser.
Selon la plupart des gens, la façon dont Apple fait cela est de faire de l'image glisser une petite image transparente. Ensuite, ils créent une fenêtre et l'ont suivi la souris. Vous pouvez ensuite utiliser la fenêtre pour faire n'importe quel type d'animation que vous voulez.
Joshua Nozzi a affiché une excellente façon de le faire: http://joshua.nozzi.name/2009/10/jlndrageffectmanager/
Oui. C'est un gestionnaire de drop-in pour cet effet particulier. Le téléchargement contient une application de démonstration. –
Si vous finissez par utiliser cette classe, faites le moi savoir et j'ajouterai votre application à la liste sur la page source. –
Jetez un coup d'méthode enumerateDraggingItemsWithOptions de NSDraggingInfo.
S'il vous plaît modifier votre réponse pour élaborer: Comment utiliseriez-vous cette méthode pour résoudre ce problème? –
Vous pouvez le faire en utilisant la méthode enumerateDraggingItemsWithOptions:
de NSDraggingInfo
dans les méthodes de gestionnaire de votre destination de déplacement (c'est-à-dire votre implémentation du protocole NSDraggingDestination
).
Par exemple:
- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender
{
NSImage* newDragImage = <take it from wherever>;
[sender enumerateDraggingItemsWithOptions:0
forView:sender.draggingSource
classes:[NSArray arrayWithObject:[NSPasteboardItem class]]
searchOptions:nil
usingBlock:^(NSDraggingItem *draggingItem, NSInteger idx, BOOL *stop) {
NSRect theFrame = draggingItem.draggingFrame;
theFrame.size = newDragImage.size;
[draggingItem setDraggingFrame:theFrame contents:newDragImage];
*stop = NO;
}];
}
- 1. Modifier une image dans java
- 2. Comment modifier une image sur un survol dans WPF?
- 3. Ajouter une image à UITabBar
- 4. Accéder à une image dans une image
- 5. Comment redimensionner une image pour l'adapter à Image :: Magick?
- 6. Comment puis-je modifier une image dans un rapport Crystal à l'aide de C#
- 7. Dans GWT, comment cliquez et faites glisser une grande image pour modifier la partie à visualiser?
- 8. PHP: tirer une image et modifier sa sortie
- 9. Comment ajouter des projecteurs à une image
- 10. Clickonce - Comment ajouter une image à l'installateur?
- 11. Comment estomper une image?
- 12. Comment redimensionner une image?
- 13. C# ajouter une couche à une image
- 14. Comment ajouter le logo MathWorks à une image dans MATLAB?
- 15. Trouver une image dans une image C#
- 16. Autoriser l'utilisateur à modifier/ajouter/déplacer des éléments dans une image
- 17. Comment modifier ma valeur Image DataImageUrlFormatString à l'intérieur de mon GridView dans le code?
- 18. Comment ajoutez-vous une image?
- 19. JQuery - comment puis-je modifier une image src sur clic d'un lien
- 20. Ajouter un bouton à une image
- 21. Comment convertir une image Pyglet en image PIL?
- 22. Trouver une Image dans une Image
- 23. comment supprimer une image sur une feuille
- 24. Comment modifier l'interface à onglets?
- 25. Modifier Visual Studio.Net 2008 IDE Image d'arrière-plan
- 26. Comment ajouter une image à l'en-tête d'une colonne ListView?
- 27. Comment ajouter des données exif à une image?
- 28. Comment imprimer une image à partir d'un Uri?
- 29. Comment passer une image de Flash à ASP.NET?
- 30. Comment enregistrer une image à partir d'une URL?
Au moins de 10.7+ la réponse acceptée est pas plus correct - voir la réponse Иван Георгиев pour la façon actuelle de changer des choses mi-glisser! – cacau