Sto sviluppando un'app per Android che distorce l'immagine. Sto usando la funzione di traduzione e ridimensionamento per distorcere l'immagine. L'immagine sta distorcendo bene. Ora voglio implementare la funzione di annullamento. Ma non è in grado di implementare la funzionalità. Qualcuno può aiutare a implementare la funzionalità di annullamento in opengl. Qualsiasi suggerimento o codice sarà utile. Grazie in anticipo.come implementare la funzionalità di annullamento in opengl in Android
risposta
Ray Tayek ha ragione. Usa lo schema di comando. Cioè, per ogni azione eseguita dall'utente, si esegue l'azione (comando) e tutti i dati relativi a tale azione nello stack di annullamento.
Diamo un'occhiata a un programma di pittura per semplicità. Il processo è direttamente applicabile alla tua app OpenGL. L'utente disegna una linea da x1, y1 a x2, y2. Il comando potrebbe essere rappresentato qualcosa di simile:
command = DrawLine
data = x1, y1, x2, y2
si sarebbe probabilmente bisogno di almeno due classi per i dati di Undo, ma sarebbe piccolo e di facile applicazione. Quando l'utente vuole annullare, basta estrarre l'oggetto principale dallo stack di annullamento, esaminarlo e portare a termine l'azione di annullamento associata (specifica per ciascun tipo di comando). Oppure, potresti anche includere l'azione di annullamento in ogni oggetto comando stesso. Quindi spingere il comando annullato sullo stack di ripetizione.
Questo dovrebbe essere sufficiente per iniziare. HTH
modifica la mia risposta sopra. Per la grafica 3D, DwB ha un buon approccio. Usa l'immagine inalterata come parte dei tuoi dati di annullamento. – Frecklefoot
Sospetto che lo schema di comando non sia sufficiente per la situazione. Ciò si basa sul presupposto che non è facile invertire la distorsione dell'immagine anche quando si conosce la distorsione applicata.
Invece, sarà probabilmente necessario spingere l'immagine in pila appena prima di applicare la distorsione. Quindi, l'implementazione di annullamento sostituirà l'immagine corrente con l'immagine in pila. Ciò porterà a problemi potenzialmente interessanti risultanti dalla combinazione di redo e undo.
È possibile ottimizzare l'archiviazione degli oggetti di comando per modifiche facilmente reversibili e la memorizzazione di immagini per modifiche che non sono facilmente reversibili.
- 1. Come implementare la funzionalità di annullamento?
- 2. Come implementare la funzionalità di annullamento/ripristino in Eclipse FormEditor?
- 3. Come implementare la funzionalità di ricerca in C#/ASP.NET MVC
- 4. Come implementare la funzionalità di Excel Solver in C#?
- 5. Come implementare la funzionalità di ordinamento in gridview?
- 6. come implementare il rendering in scala di grigi in OpenGL?
- 7. Come implementare Android 4.0 come swipe per eliminare la funzionalità in ListView?
- 8. Implementazione delle funzionalità di annullamento e ripetizione javascript e php
- 9. Come implementare l'interfaccia btIDebugDraw di Bullet in OpenGL 4.0
- 10. Come implementare funzionalità come la funzione "Nuova storia" di Facebook?
- 11. opengl - come implementare "rendering portale"
- 12. Come aggiungere funzionalità di annullamento alla tela HTML5?
- 13. Dove implementare Funzionalità comune In Asp.net MVC
- 14. Come abilitare la funzionalità di sink A2DP in Android?
- 15. Come posso aggiungere in modo decente una funzionalità di "annullamento" alle monadi di stato?
- 16. Modo corretto di implementare SlidingDrawer in Android
- 17. Come implementare la memorizzazione nella cache di ListView in Android
- 18. Riprendi la funzionalità di download in NSURLConnection
- 19. Come implementare "Cancel" funzionalità in un Visualforce pagina
- 20. Come implementare l'annuncio di mediazione in Android
- 21. Iniziare con OpenGL ... in Android
- 22. Implementare la funzionalità di paging (skip/take) con questa query
- 23. Come implementare l'annullamento/ripristino in UIWebView
- 24. Come implementare l'annullamento/ripristino in un'applicazione MVVM?
- 25. Come implementare la funzionalità di suggerimento automatico (completamento automatico) in GAE
- 26. Come implementare la funzione "Ricordami" in un'attività Android?
- 27. Come implementare la condivisione tramite l'opzione in Android?
- 28. Come implementare la classe CountDownTimer in Xamarin C# Android?
- 29. come implementare Rate Us in Android
- 30. Come posso implementare SlideShow in Android?
Questo non ha nulla a che fare con OpenGL. OpenGL disegna solo ciò che gli dici di disegnare. Qualsiasi funzionalità di annullamento riguarda il cambiamento di ciò che gli si dice di disegnare per essere quello che era un tempo. –
@NicolBolas effettivamente sto distorcendo l'immagine al tocco del dito. L'immagine si restringe o si gonfia. La domanda è, cosa devo archiviare e come rifletterlo sulla vista. –
Credo che dovresti memorizzare l'immagine corrente ad ogni inizio tocco. Quindi, quando l'annullamento è terminato, è sufficiente rilasciare l'immagine corrente e sostituirla con l'ultima immagine in coda. Alcune operazioni potrebbero essere invertite usando opengl, ma non penso che dovresti usare queste caratteristiche qui. Memorizza l'originale e ogni operazione eseguita con il dito o l'immagine per ogni passaggio. – Pihhan